概要

MastersBar/6においてクッキーの読み書きに関する不具合が投稿されました。
この不具合に対処する一方法として、クッキーへの保存形式を変更する方法を記載します。

保存形式

各値を16進数に変換したものをクッキーに保存するようにします。
また、既存データとの互換性のため、変換したデータであることを識別できるようにプレフィックスとして">"を付加します。

変更前SOS2=name:サンプル,pass:sample,id:0000
変更後SOS2=name:>835483938376838b,pass:>73616d706c65,id:>30303030

変更内容

  • 設定部分の変更
    以下を追加します。

    $cookie_trans_prefix = '>'; # 変換されていることを表すプレフィックス

     
  • sub cookie_getの変更

    $COOKIE{$name} = $value;

    この部分を以下のように変更します。

    $COOKIE{$name} = $cookie_trans_prefix eq substr($value, 0, length($cookie_trans_prefix)) ? pack('H*', substr($value, length($cookie_trans_prefix))) : $value;

     
  • sub cookie_setの変更

    $cook="name\:$Fm{'name'}\,pass\:$Fm{'pass'},id\:$Fm{'id'}";

    この部分を以下のように変更します。

    $cook = "name:${cookie_trans_prefix}" . unpack('H*', $Fm{'name'}) . ",pass:${cookie_trans_prefix}" . unpack('H*', $Fm{'ps'}) . ",id:${cookie_trans_prefix}" . unpack('H*', $Fm{'id'});

補足

  • この方法では単純に16進数に変換しているだけですのでJavaScript?との相性が悪いです。
  • idの値はそのままでも良いのですが統一感をとるためだけの理由で変換してあります。

コメント

コメントはありません。 Comments/不具合修正/クッキーに保存できない文字への対応?

お名前:

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-04-30 (火) 00:57:42 (718d)