1. ホーム
  2. internet-explorer

[解決済み] Internet ExplorerのIFRAMEでCookieがブロックされる/保存されない

2022-03-26 09:42:13

質問内容

私は2つのウェブサイトを持っています。 example.comanotherexample.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ヘッダーが 本当に 法的拘束力があるのか、約束を守る気がないのにユーザーに何でも約束できるのか。