2017-02-07 7 views
0

私はSESSION変数がPHPに格納されていることを理解しています。
しかし、ブラウザを閉じてからページに戻ると、以前設定したセッションがブラウザに属していることをPHPがどのように知っていますか?
IPアドレス?PHPはどのブラウザにSESSION変数が設定されているかをどのようにして知っていますか?

IPを使用している場合、PHPがブラウザとセッションを関連付ける方法であるため、誰かがIPアドレスを偽装して他のユーザーアカウントにログインすることはできませんでしたか? docs(強調鉱山)から

+1

phpはCookie 'PHPSESSID'を設定します。 –

+0

@FranzGleichmann他の国民のアカウントにアクセスするためにその値を編集できないのですか? – Wyatt

+0

はい、セッションハイジャックと呼ばれています。だからこそ** HTTPS ** –

答えて

3

セッションは一意のセッションIDに対する個々のユーザーのデータを保存するための簡単な方法です。これは、ページ要求間で状態情報を保持するために使用できます。セッションIDは通常で、セッションクッキーでブラウザに送信され、IDは既存のセッションデータを取得するために使用されます。 IDまたはセッションCookieが存在しない場合、PHPは新しいセッションを作成し、新しいセッションIDを生成することができます。

新しいセッションが開始されると、PHPはランダムな文字列を生成します。このIDは、Cookie値としてブラウザに返されます。後続のリクエストはこのクッキーをサーバに戻し、検索して戻ってくる同じユーザであることを知ることができます。ランダムなセッションIDにより、他人が他の人のセッションを推測してアクセスすることが難しくなります。

最新バージョンのPHPでは、推測が容易であると思われる場合はlength of the session IDを設定できます。しかし、統計的には、セッションIDの生成に関するデフォルトはほとんどのWebサイトでは問題になりません。

session.nameの設定では、ブラウザのCookie名が決まります。デフォルトではPHPSESSIDです。

+0

他の国民のアカウントにアクセスするためにその値を編集できないのですか? – Wyatt

+0

@Wyatt有効なものが見つかるまで数十億回の長いランダムIDを推測する必要があります – nogad

+0

はい。しかし、ランダムに生成された文字列を推測する必要があります。 –

関連する問題