1

配列をシャッフルしてクッキーに保存するスクリプトがあるので、ユーザーは配列を一度だけシャッフルします。

スクリプトは次のとおりです。

$shufflecookie = $_COOKIE['shuffle'];
                
if (isset($_COOKIE['shuffle'])) {
  $items = unserialize(gzuncompress(base64_decode($shufflecookie)));
}
else {
  shuffle($items);
  $items_serialized = base64_encode(gzcompress(serialize($items)));
  setcookie("shuffle", $items_serialized, 0, "/");
}

それをしても安全ですか?または、このデータを保存するより良い方法がありますか? ありがとう

アップデート。助けてくれてありがとう。私がしたことは、Cookieをセッションに置き換えただけです。したがって、新しいコードは次のとおりです。

$shufflecookie = $_SESSION["shuffle"];
                
if (isset($_SESSION["shuffle"])) {
  $items = unserialize(gzuncompress(base64_decode($shufflecookie)));
}
else {
  shuffle($items);
  $items_serialized = base64_encode(gzcompress(serialize($items)));
  $_SESSION["shuffle"] = $items_serialized;
}
4

1 に答える 1

0

質問をしてから、二次的な回答で質問を更新したようです。

Cookie にデータを保存することの欠点は、これがクリア テキストでクライアント PC に保存されることです (最初にサーバー側が暗号化されていない場合)。データを暗号化したとしても、ユーザーが暗号化を解除できる可能性は常にあります。Cookie の存続時間によっては、Cookie がブラウザの寿命を超えて存続する可能性もあります (つまり、シャットダウン後)。これにより、後のページ要求でサーバーに送り返される前に、クライアントが Cookie のデータを変更していない可能性が生じます。

一方、情報をセッションに保存すると、情報がサーバー側に保存され、クライアントがこの情報を表示できなくなります。通常、セッションを使用する場合、セッション ID を Cookie に保存するだけで、ユーザーがどのセッションに参加したかを識別できます。

したがって、セキュリティで保護する必要があるデータは、Cookie ではなくセッション内に保持する必要があります。

于 2012-10-11T17:49:31.580 に答える