セッション変数を暗号化することによるセキュリティ上のメリットはありますか?

それは、例えば、セッションハイジャックを防ぐか?そうでない場合は、私のPHPセッションを安全にするために何ができますか?

7

2 答え

クライアントに送信されるのはセッション識別子であり、セッション変数ではありません。これらのセッション識別子は、通常、クライアントのクッキーとして設定されます。もちろん、ユーザーがブラウザやクライアントからセッション識別子(たとえば、クロスサイトスクリプティング攻撃を使用して)を取得した場合は、自分のクライアントでセッション識別子を設定し、他のユーザーとして偽装できます。

しかし、セッション変数は通常 $ _ SESSION 配列の値を参照します。 http://www.php.net/manual/en/functionを参照してください。 session-start.php を参照してください。これらの値は、ネットワーク経由でクライアントに送信されることはありません。

セッション識別子を保護することに関しては、最初の段落ですでにブラウザにクッキーとして保存されていることを説明しました。 HTTPセッションでは、クッキーはサーバーとクライアントの間で平文で送信されます。これは盗聴に対して脆弱です(例えば、パケットを通過させるルータ上の人があなたのパケットをキャプチャし、そこからセッション識別子を読み取る可能性があります)。この問題を克服する最善の方法は、代わりにHTTPSを使用することです。

14
追加された

私はそれがあなたが "安全保障"によって意味するものに依存していると思います。あなたのアプリケーションが共有ホスト上にあり、他のユーザーが読むことができる安全でない中央の場所にセッションデータが保存されている場合は、はい、技術的には暗号化のセキュリティ上の利点がありますあなたのセッション。しかし、あなた自身で書くことは、あなたの時間と労力をはるかに上回るものです最初の場所に安全でない場所に保存しないでください特に完全に間違った暗号化を行うのが簡単でセキュリティの誤った感覚を与えている場合は特にそうです。

+1 ...私はこれがより良い質問に答えると思います。セッション変数自体は公開されていません(あなたがそれらを公開する何かをやっていない限り)。しかし、普遍的なtmp /セッション記憶場所がある設定の悪い共有ホストにいると、サーバ上の他のサイトがそれらへのアクセス。
追加された 著者 Ben D,
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com