1

かなり一般的な認証スキームを使用するPHPサイトがあります。

  • ログインエリア全体にSSLが必要です。
  • ユーザーがユーザー名とpwを入力し、それらがdbと一致する場合、セッションが開始され、値が設定されます。
  • 認証が必要なページにアクセスしようとすると、その値がセッションに存在するかどうかを確認し、存在しない場合はログインページに転送します。

セッションCookieを使用するように設定されていない、または転送ページのキャッシュの保存に問題があるなどの理由でログインに問題がある人が常にいます。

しかし最近は、IEを使ってログインできない人がたくさんいます。セッションCookie設定を修正してキャッシュをクリアしても効果はありませんが、同じコンピューターでfirefox/operaを使用している場合はログインできます。IEの問題であり、その間の問題ではないと確信しています。

セッションCookieに影響を与えるIE7への最近の変更を知っている人はいますか?

アップデート:

最近、ログインの直後にsession_regenerate_id()呼び出しを実装しました。これは、ユーザーが使用される既存のセッションを持っている場合があるためですが、それはかなり前のことです。

4

3 に答える 3

3

私の最初のステップは、IE ではなく Firefox でログインできるユーザーを見つけ、両方に対して Fiddler を実行して、ログイン プロセスの HTTP 要求/応答ペアの違いを確認することです。少なくとも、どこを見ればよいか、より良いアイデアが得られるはずです。

于 2009-06-29T19:43:51.930 に答える
1

IE のセキュリティ設定が強化されている場合 (特に企業環境では一般的です)、またはログインしているページがフレームまたは iframe 内にある場合、それが原因で Cookie が保存されない可能性があります。その場合は、P3P ポリシーの HTTP ヘッダーを設定するだけです。これは、それらを実装する方法について私が見つけた最良の説明です。

于 2009-06-29T21:12:15.137 に答える
0

何も聞いていません。ただし、これがまさに、すべての公開プロジェクトでCookieなしのセッションを使用するように切り替えた理由です。ASP.Netにはこれが組み込まれていると思いますが、私は独自の実装を使用することを好みます。クエリ文字列のsessionidパラメータをページからページに渡し、それをDBレコードまたは他のデータストアに結び付ける方がはるかに信頼性が高くなります。

于 2009-06-29T18:18:52.153 に答える