構造化データを Cookie に保存する必要があります。
カタログページのお気に入り。データは{ {id,type} , {id,type} , ... }
私のコードでは、配列に戻す必要があります。そのため、関数を使用しunserialize()
てデータを回復しています。
オブジェクトインジェクションを防ぐ方法はありますか? unserialize 関数に代わるものはありますか?
4 に答える
オブジェクトインジェクションを防ぐ方法はありますか
オブジェクトのシリアル化を解除すると、PHP は__wakeup
クラスの定義でメソッドを呼び出します (これは Cookie には保存されず、サーバー上の PHP クラス ファイルに保存されます)。
__wakeup
誰かがシリアル化されたオブジェクトのクラスを変更して、関数に何らかのタスクを実行させることを正しく推測することは可能でしょうか? はい。通常、__wakeup
関数は単にリソースに再接続するだけなので、これは大したことではないかもしれませんが、なぜリスクを冒すのでしょうか? 配列をJSONとして保存し、json_encode($yourdata)
それを元に戻すだけですjson_decode($cookiedata, true)
クライアント側に格納されているデータがセキュリティ リスクを引き起こさない限り (つまり、機密情報が漏洩しない限り)、問題はありません。ユーザーのお気に入りを保存することは、特にトラフィックの多いサイトであり、このタイプのデータに対してデータベースのフェッチや長いセッションを実行する必要がない場合に適しています。
私が考えている方法は、Cookie 情報を暗号化して、ユーザーが何を編集しているのかをユーザーにわからないようにすることです。