2011-01-14 10 views
0

私には安全な領域(https)とサイトの残りの部分(http)を持つウェブサイトがあります。すべてがセッション変数を使って物事のhttps側にログインするとすばらしいことができ、セキュリティ保護された領域はすばらしく機能しています。httpsとhttpの間のPHPセッション変数

私の問題: サイトのすべてのhttpページの上部に「ログイン/登録」ボタンがあります。私はこれをログイン状態を反映し、 "ログアウト"に変更し、単にhttpsページにリダイレクトする他のいくつかのログインボタンを持っています。私はどのような方法でもhttpページのデータやその他の安全な情報を操作しようとしていません。

IE8では、httpsで作成されたログイン用のセッション変数がhttp(ホームページ)で検出され、代替の「ログアウト」リンクが正しく表示されます。しかし、他のすべてのブラウザでは、セッション変数はhttpにはありません。巨大なセキュリティ上の欠陥を作成せずにこれを修正する最も簡単な方法は何ですか?ああ、httpとhttps以外のURLは同じです。

答えて

1

多くのサイトで使用する簡単な方法の1つは、ボタンが実際にクライアントサイドにロードされるようにすることです。これは、HTTPS URLにリクエストして、ユーザーがログインしているかどうかを判断するスクリプトですそのためのHTMLをHTTPで提供されるページの一部にすることができます。

+0

これは理想的ですが、実装する際に問題があります。私はhttps経由で呼び出されるlogincheck.phpファイルを持っており、ログインステータスを返します(しかし機密情報はありません)。私はページを呼び出すjqueryの負荷を使用して、それは動作しませんでした。私はPHPでcURLを使ってデータを返すことができますが、ログインしていてもスクリプトは常にログインしていない状態を返すようになっています。何か案は? –

+0

FirebugまたはChromeデベロッパーツールを使用して、送信されている実際のAJAXリクエスト、それと一緒に送信されているクッキー、そのレスポンスなどを確認してください。 – Amber

1

セッションCookieを保護する場合は、ブラウザがHTTPSのCookieのみを送信するようにします。したがって、HTTP通信からログイン状態を把握する方法は不確実です。

私は解決策を+1しました。

関連する問題