[解決済み] Internet ExplorerのIFRAMEでCookieがブロックされる/保存されない
質問内容
私は2つのウェブサイトを持っています。
example.com
と
anotherexample.net
.
について
anotherexample.net/page.html
を、持っています。
IFRAME SRC="http://example.com/someform.asp"
. そのIFRAMEは、ユーザーが必要事項を記入して送信するためのフォームを表示し、次のように表示します。
http://example.com/process.asp
. フォームを開くと("
someform.asp
")をブラウザの専用ウィンドウで表示すると、すべてうまくいきます。
しかし
を読み込むと
someform.asp
IE 6またはIE 7でIFRAMEとして使用した場合、example.comのクッキーは保存されません。
Firefoxでは、この問題は表示されません。
テスト目的で、同様の設定を http://newmoon.wz.cz/test/page.php .
example.com
はクッキーベースのセッションを使用しているため(そしてそれはどうしようもない)、クッキーなし。
process.asp
は実行されません。
どうすればIEにクッキーを保存させることができますか?
HTTPトラフィックをスニッフィングした結果: GET /someform.asp レスポンスに、有効な per-session Set-Cookie ヘッダー (例: 「Set-Cookie」) がありました。
Set-Cookie: ASPKSJIUIUGF=JKHJUHVGFYTTYFY
しかし、POST /process.aspのリクエストでは、Cookieヘッダが全くありません。
Edit3: AJAX+サーバーサイドのスクリプトで問題を回避できるようですが、これは非常にバグのように見えます。 セキュリティホール . 私は、簡単だからといって、バグとセキュリティホールの組み合わせを自分のアプリケーションに使って欲しくありません。
編集 P3Pポリシーが根本原因 以下、詳しい説明。
解決方法は?
私はそれを動作させることができましたが、解決策は少し複雑ですので、私に我慢してください。
何が起きているのか
Internet Explorerは、IFRAMEページ(IEはこれを"third-party"と呼んでいます)に対して低いレベルの信頼を与えているため、このままでは、IFRAMEページに対する信頼度が低くなります。IFRAME内のページがプライバシーポリシーを持っていない場合、そのクッキーはブロックされます(ステータスバーの目のアイコンで示され、それをクリックするとブロックされたURLのリストが表示されます)。
<サブ
(出典
piskvor.org
)
この場合、Cookieがブロックされると、セッション識別子が送信されず、ターゲットスクリプトは「セッションが見つかりません」というエラーを投げることになります。
(セッション識別子をフォームに設定したり、POST変数から読み込んだりしてみました。 これはうまくいったはずです しかし、政治的な理由でそれはできませんでした)。
IFRAME内のページをより信頼できるものにすることは可能です。 内部ページがIEに受け入れられるプライバシーポリシーを持つP3Pヘッダを送信した場合、クッキーは受け入れられます。 .
解決方法
p3pポリシーの作成
出発点として良いのは
W3Cチュートリアル
. 私は、それを見て、ダウンロードした
IBMプライバシー・ポリシー・エディター
で、そこでプライバシーポリシーの表現を作成し、それを参照するための名前を付けました(ここでは、それが
policy1
).
注意事項 この時点で、あなたのサイトにプライバシーポリシーがあるかどうかを確認し、ない場合は作成する必要があります。この情報を見つけ を考える についてです。 ただタグを並べるだけではダメなんです。 このステップは純粋にソフトウェアで行うことはできず、高度に政治的なものになる可能性があります(例:"クリック統計を販売すべきか?")。
(例:"このサイトは株式会社ACMEが運営している、運営にはセッションごとの匿名識別子を使用している、明示的に許可された場合のみ、以下の目的のためにのみユーザーデータを収集する、データは必要な期間だけ保存する、当社のみがアクセスできる、など)"。
(このツールで編集する場合、ポリシーのエラー/省略を表示することが可能です。また、「HTMLポリシー」タブも非常に便利です。)
エディターは、上記のポリシーをXMLで表現した.p3pファイルとしてエクスポートします。また、このポリシーのコンパクトバージョンもエクスポートすることができます。
ポリシーへのリンク
次に、Policy Reference ファイル (
http://example.com/w3c/p3p.xml
が必要でした(サイトが使用するプライバシーポリシーの索引)。
<META>
<POLICY-REFERENCES>
<POLICY-REF about="/w3c/example-com.p3p#policy1">
<INCLUDE>/</INCLUDE>
<COOKIE-INCLUDE/>
</POLICY-REF>
</POLICY-REFERENCES>
</META>
は
<INCLUDE>
は、このポリシーを使用するすべての URI (私の場合はサイト全体) を示しています。エディタからエクスポートしたポリシーファイルを、アップロード先の
http://example.com/w3c/example-com.p3p
レスポンスと一緒にコンパクトヘッダを送信する
example.comのウェブサーバーに、以下のようにレスポンスと一緒にコンパクトヘッダを送信するように設定しました。
HTTP/1.1 200 OK
P3P: policyref="/w3c/p3p.xml", CP="IDC DSP COR IVAi IVDi OUR TST"
// ... other headers and content
policyref
は、Policy Reference ファイルへの相対 URI です (このファイルは順番にプライバシー ポリシーを参照します)。
CP
はコンパクトなポリシー表現です。
この例のP3Pヘッダーの組み合わせは、あなたの特定のウェブサイトに適用されないかもしれないことに注意してください。あなたのP3Pヘッダーは、あなた自身のプライバシーポリシーを正直に表現しなければなりません
儲かる!?
この設定では、イービルアイは表示されず、IFRAMEでもクッキーは保存され、アプリケーションは動作します。
編集:訴訟から身を守るのが好きでないなら、やってはいけないこと
何人かの人が、「P3Pのヘッダーに、邪眼が諦めるまでタグを打ち込めばいい」と提案しています。
タグはビットの集合体であるだけでなく 現実世界での意味 そして、その使用によって 実世界での責任 !
例えば、ユーザーデータを収集しないふりをすれば、ブラウザは喜ぶかもしれませんが、実際にユーザーデータを収集すれば、P3Pは現実と相反することになるのです。明白でシンプルです。 ユーザーに対して意図的に嘘をついている 国によっては犯罪行為になる可能性もあります。そして、それは国によっては犯罪行為となります。
いくつかの例( タグの完全なセットはp3pwriterを参照してください。 ):
- NOI : "ウェブサイトは、識別されたデータを収集しません。(カスタマイズ、ログイン、または任意のデータ収集(**** Analytics、誰? しなければならない P3Pの中でそれを認める)
-
STP
: 情報は、定められた目的を果たすために保持される。そのため、情報は可能な限り早い時期に廃棄される必要がある。サイトは、破棄のタイムテーブルを確立する保持ポリシーを持たなければならない。保持ポリシーは、そのサイトの人間が読めるプライバシーポリシーに含まれるか、またはそこからリンクされていなければなりません。
STP
が、リテンション・ポリシーを持っていない場合、あなたは かもしれない 不正行為を行っていることになります。なんて素敵なんでしょう。そんなことないですよ(笑)
私は弁護士ではありませんが、裁判をしてまで、P3Pヘッダーが 本当に 法的拘束力があるのか、約束を守る気がないのにユーザーに何でも約束できるのか。
関連
-
[解決済み] HTTPSのセキュリティが侵害されているエラーです。修正方法は?[クローズド]
-
[解決済み] Html5: ビデオファイルが見つかりません
-
[解決済み] Internet ExplorerのIFRAMEでCookieがブロックされる/保存されない
-
[解決済み] Internet Explorerで'console'が未定義のエラーになる。
-
[解決済み] なぜCSRF防止トークンをクッキーに入れるのが一般的なのですか?
-
[解決済み] Internet Explorer 6、Internet Explorer 7、Internet Explorer 8を同一マシンで動作させる場合
-
[解決済み】X-UA-CompatibleをIE=edgeに設定しても、互換モードが止まらない。
-
[解決済み】IE11を検出する方法は?
-
[解決済み] Internet ExplorerはpushStateとreplaceStateをサポートしていますか?
-
[解決済み] IE9でCSS3の@font-faceを使用してAdobeフォントを動作させる
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ユーザーエージェントの文字列にある「Trident」は何を意味しているのですか?
-
[解決済み] HTTPSのセキュリティが侵害されているエラーです。修正方法は?[クローズド]
-
[解決済み] Html5: ビデオファイルが見つかりません
-
[解決済み] Internet Explorer 11からInternet Explorer 10にダウングレードする方法を教えてください。
-
[解決済み] Internet ExplorerのIFRAMEでCookieがブロックされる/保存されない
-
[解決済み】X-UA-CompatibleをIE=edgeに設定しても、互換モードが止まらない。
-
[解決済み】IE11を検出する方法は?
-
[解決済み] IEでの "border-radius "対応について
-
[解決済み] Internet Explorer 8はHTML 5をサポートしていますか?
-
[解決済み] IE9でCSS3の@font-faceを使用してAdobeフォントを動作させる