0

ここで気になるシチュエーションです。私が次のものを持っているとしましょう:

  1. 次の Web サイトを実行する php/apache Web サーバー:

    /var/www/version1ofmyapp/

    /var/www/version2ofmyapp/

  2. ユーザーのマシンで Cookie が有効になっている。

  3. Web アプリは、ログイン/ログアウト時にセッションにデータを書き込みます

version1ofmysite にログインすると (PHPSESSID という Cookie が作成されます)、version2ofmysite にアクセスできますか? たとえば、サイトのバージョン 1 にログインしてから、URL をバージョン 2 に変更すると、既に認証されているかのようにログインできます。なぜこれが起こっているのかをよりよく理解したいと思います。

ありがとう。

編集1:

同一ドメイン

4

3 に答える 3

1

Cookie PHPSESSID は、それを作成したドメインに限定され、そのドメインまたはサブドメインにのみ送信されます。同じサーバーに複数のドメインがある場合、それぞれに異なる PHPSESSID Cookie があります。

サブドメインを使用していて、それらの間でセッションを共有したい場合は、すべてのサブドメインで同じセッションを共有するために、session_start() を呼び出す前に session_set_cookie_params($lifetime_in_seconds, '/', '.mydomain.com') を使用できます。

Cookie のスコープは、ホスト名 (誤解を招きやすいようにドメインと呼ばれます)、次に名前です。異なるドメイン (ホスト) 用である場合にのみ、PHPSESSID という名前の 2 つの Cookie を持つことができます。1 つのドメインに、同じ名前の 2 つの Cookie を含めることはできません。これを行おうとすると、すでに設定されているものへの変更と見なされます。

于 2013-01-18T19:53:17.123 に答える
1

php.ini ファイルで、これを許可するようにサーバーを構成できます。

session.cookie_domain = ".mydomain.com"

これにより、Cookie へのサブドメイン アクセスが許可されます。

于 2013-01-18T19:50:55.380 に答える
1

Cookie はドメインに対して定義され、パスに対して定義できます。そのため、Cookie の送信を制限できます。

2 つのアプリケーションで使用されているセッション ID があり、同じセッション ストレージを使用している場合、セッションに保存されている情報にアクセスできます。

したがって、ログインしているという情報は両方のアプリケーションで使用されます。それを防ぐためにセッションの名前 (http://php.net/manual/en/function.session-name.php) を変更するか、セッションストレージ (http://php.net/manual/ en/function.session-save-path.php)

于 2013-01-18T19:49:36.790 に答える