2012-02-06 15 views

答えて

13

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

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

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

0

「セキュリティ上のメリット」という意味にかかっていると思います。アプリケーションが共有ホスト上にあり、セッションデータが他のユーザーが読むために開かれている安全でない中央の場所に保管されている場合は、はいというように、技術的にはセッションを暗号化することでいくつかの利点があります。しかし、あなたの時間と労力を単にwrite your own session storage mechanismにする方がはるかに優れているので、最初は安全でない場所に保存しないでください。特に暗号化を行うのがどれくらい簡単かは完全に間違っていますとセキュリティの誤った感覚を与えます。

+0

+1 ...これは質問によく答えると思います。セッション変数自体は公開されていません(あなたがそれらを公開する何かをやっていない限り)。しかし、普遍的なtmp /セッション記憶場所がある設定の悪い共有ホストにいると、サーバ上の他のサイトがそれらへのアクセス。 –

関連する問題