gpt4 book ai didi

internet-explorer - Cookie 在 Internet Explorer 的 IFRAME 中被阻止/未保存

转载 作者:行者123 更新时间:2023-12-03 03:56:56 24 4
gpt4 key购买 nike

我有两个网站,假设它们是 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 的 cookie 不会被保存。 在 Firefox 中不会出现这个问题。

出于测试目的,我在 http://newmoon.wz.cz/test/page.php 上创建了一个类似的设置.
example.com使用基于 cookie 的 session (我对此无能为力),因此没有 cookie,process.asp不会执行。 如何强制 IE 保存这些 cookie?

嗅探 HTTP 流量的结果:在 GET/someform.asp 响应中,每个 session 都有一个有效的 Set-Cookie header (例如 Set-Cookie: ASPKSJIUIUGF=JKHJUHVGFYTTYFY),但在 POST/process.asp 请求中,根本没有 Cookie header 。

Edit3:一些 AJAX+服务器端脚本显然能够回避这个问题,但这看起来很像一个错误,而且它打开了一组全新的 security holes .我不希望我的应用程序仅仅因为它很容易就使用错误+安全漏洞的组合。

编辑: P3P 政策是根本原因 ,完整解释如下。

最佳答案

我让它工作了,但解决方案有点复杂,所以请耐心等待。

发生了什么

实际上,Internet Explorer 对 IFRAME 页面的信任级别较低(IE 将此称为“第三方”内容)。如果 IFRAME 内的页面没有隐私政策,则其 cookie 将被阻止(由状态栏中的眼睛图标指示,当您单击它时,它会向您显示被阻止的 URL 列表)。

the evil eye
(来源:piskvor.org)

在这种情况下,当 cookie 被阻止时,不会发送 session 标识符,并且目标脚本会抛出“找不到 session ”错误。

(我已经尝试将 session 标识符设置到表单中并从 POST 变量加载它。 这本来可以工作 ,但出于政治原因我不能这样做。)

可以使 IFRAME 内的页面更受信任:如果内页发送带有 IE 可接受的隐私策略的 P3P header ,则 cookie 将被接受 .

如何解决

创建 p3p 策略

一个好的起点是 W3C tutorial .我已经看完了,下载了IBM Privacy Policy Editor在那里我创建了隐私政策的表示,并给了它一个名称以引用它(这里是 policy1 )。

注意 :此时,您实际上需要了解您的网站是否有隐私政策,如果没有,则创建它——它是否收集用户数据、什么样的数据、它用它做什么、谁可以访问它等等. 你需要找到这些信息并考虑一下。 只是将几个标签拍打在一起不会削减它。 这一步不能完全在软件中完成,并且可能是高度政治化的(例如“我们应该出售我们的点击统计数据吗?”)。

(例如“该网站由 ACME Ltd. 运营,它使用匿名的每 session 标识符进行运营,仅在明确允许的情况下收集用户数据并且仅用于以下目的,仅在必要时存储数据,仅我们公司可以访问它,等等。”)。

(使用此工具进行编辑时,可以查看策略中的错误/遗漏。“HTML 策略”选项卡也非常有用:在底部,它有一个“策略评估”——快速检查策略是否会被阻止通过 IE 的默认设置)

编辑器导出为 .p3p 文件,这是上述策略的 XML 表示。此外,它还可以导出此策略的“压缩版本”。

政策链接

然后需要一个政策引用文件( 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
发送带有响应的紧凑 header

我已将 example.com 上的网络服务器设置为发送带有响应的紧凑 header ,如下所示:
HTTP/1.1 200 OK 
P3P: policyref="/w3c/p3p.xml", CP="IDC DSP COR IVAi IVDi OUR TST"
// ... other headers and content
policyref是策略引用文件(反过来引用隐私策略)的相对 URI, CP是紧凑策略表示。 请注意,示例中的 P3P header 组合可能不适用于您的特定网站;您的 P3P header 必须如实代表您自己的隐私政策!

利润!

在此配置中,Evil Eye 不会出现,即使在 IFRAME 中也会保存 cookie,并且应用程序可以正常工作。

编辑:什么不该做,除非你喜欢在诉讼中辩护

有几个人建议“在你的 P3P 标题中添加一些标签,直到 Evil Eye 放弃”。

标签不仅是一堆位,它们还有 现实世界的意义 ,它们的使用为您提供 现实世界的责任 !

例如,假装你从不收集用户数据可能会让浏览器高兴,但如果你真的收集用户数据,P3P 就与现实相冲突。简单明了, 您故意向用户撒谎 ,这在某些国家可能是犯罪行为。就像“坐牢,不要收取 200 美元”一样。

几个例子( see p3pwriter for the full set of tags ):
  • NOI :“网站未收集识别数据。” (一旦有任何自定义、登录或任何数据收集(***** 分析,有人吗?),您 必须 在您的 P3P 中确认)
  • STP : 信息被保留以满足规定的目的。这需要尽可能早地丢弃信息。站点必须具有建立销毁时间表的保留策略。保留政策必须包含在网站的人类可读的隐私政策中或从中链接。”(因此,如果您发送 STP 但没有保留政策,您可能在实现欺诈。这有多酷?一点也不.)

  • 我不是律师,但我不愿意去法庭看看 P3P header 是否真的具有法律约束力,或者您是否可以向您的用户 promise 任何事情而实际上不愿意兑现您的 promise 。

    关于internet-explorer - Cookie 在 Internet Explorer 的 IFRAME 中被阻止/未保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/389456/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com