IE iframe cookie问题(p3p)

IE iframe cookie问题(p3p)

前段时间碰到一个问题,就是在IE下,使用iFrame嵌入页面时,该页面的会话级别的cookie无法写入,导致服务端始终无法获取JSESSIONID,每次都是产生一个新的,使得Session无法使用。

当时发生问题的时候是自进行CAS登陆框嵌入,现象就是CAS的lt不更新,一开始以为是iFrame缓存的原因,经过细心的排查发现并不是,然后将想到跨域问题,经过排查发现也不是,甚至怀疑到spring产生lt值得机制存在问题,最终发现是Session无法正确获取,每次都会产生新的 Session,经过一番Google,找到解决方案。

只需要设置 P3P HTTP Header,在隐含 iframe 里面跨域设置 cookie 就可以成功。

ASP直接在头部加了头部申明,测试有效。
<%Response.AddHeader "P3P", "CP=CAO PSA
OUR"%>

PHP的话,应该是如下写法:
header(‘P3P: CP=CAO PSA OUR‘);

ASP.NET的话
通过在代码上加Response.AddHeader("P3P", "CP=CAO PSA
OUR")或者在Window服务中将ASP.NET State Service 启动。

JSP:
response.setHeader("P3P","CP=CAO PSA OUR")

一、关于IE6 IFrame或Frame中读写cookie的问题分析

IE6加入了以PlatformforPrivacyPreferences(P3P)为基础的 隐私保护功能,有关此功能的说明请参阅“”

在ie6中Cookie被分成了first party cookie和third party
cookie,即第一方Cookie和第三方Cookie,所谓的第三方Cookie是指在Frame或者Iframe中嵌套页面的Cookie。

当第三方站点试图读写cookie时,IE6就会自动拦截(在状态栏下显示红色禁止图标)

在IE下是不能在IFrame中设置cookie的,在FF下可以,在HTTP 标头加入P3P后,即可解决该问题。

二、P3P

P3P 是万维网联盟(W3C)公布的一项隐私保护推荐标准,旨在为网上冲浪的Internet用户提供隐私保护。现在有越来越多的网站在消费者访问时,都
会收集一些用户信息。制定P3P标准的出发点就是为了减轻消费者因网站收集个人信息所引发的对于隐私权可能受到侵犯的忧虑。P3P标准的构想是:Web
站点的隐私策略应该告之访问者该站点所收集的信息类型、信息将提供给哪些人、信息将被保留多少时间及其使用信息的方式,如站点应做诸如
“本网站将监测您所访问的页面以提高站点的使用率”或“本网站将尽可能为您提供更合适的广告”等申明。访问支持P3P网站的用户有权查看站点隐私报告,然
后决定是否接受cookie或是否使用该网站。

访问官方P3P网页以获取更多技术信息:http://www.w3.org/P3P

三、相关技术文章

  1. Help!
    IE6 Is Blocking My Cookies[1]
    [2]
    a).What
    is P3P?
    b).Why Does IE6 Block My Cookies?
    c).What are Third-Party
    Cookies?
    e).How Can I Prevent IE6 from Blocking My Cookies?
    f).How Do I
    P3P Enable My Web Site and Use Compact Policies?
    g).I P3P-Enabled My Site,
    But My Cookies are Still Being Blocked by IE6
    h).My Cookies aren‘t being
    Blocked, But Users are Not Able to View an i).IE6 Privacy Report for My
    Site
  2. The Platform for
    Privacy Preferences 1.0 Deployment Guide
  3. Make Your Web Site P3P
    Compliant
    此文通过6个简单的步骤介绍如何在网站上实施P3P策略。

四、“官方”的解决方法

看完了第三节的文章你会发现,所谓P3P策略实际就是一个部署在Web服务器上的简单XML文件,指明网站打算使用哪些cookie以及派什么用途。这个XML文件类似这种格式

<META
xmlns="http://www.w3.org/2000/12/P3Pv1">
<POLICY-REFERENCES>
     
<POLICY-REF
about="/P3P/Policy1.xml">
         
<COOKIE-INCLUDE
             
name="*"
             
value="*"
             
domain="*"
             
path="*"/>
     
</POLICY-REF>
</POLICY-REFERENCES>
</META>

可以使用IBM的P3P策略编辑器IBM‘s
P3P Policy Editor
来编写这个文件。

三种部署方式:

  1. Well-Know location
    /w3c/p3p.xml
    将P3P Reference
    File档案更名为p3p.xml,并放置在/w3c目录当中
  2. HTTP 头
    P3P:policyref="http://www.mysite.com/w3c/p3p.xml"
    CP="ALL DSP COR NID CUR OUR IND PUR"
    CP
    是由3字符代码组成的列表(相关信息已经在W3C网站上进行了说明)。在上例中,该网站不定期地(INDefinite)为OUR公司收集购买商品项
    目(PURchasing)或完成当前活动(CURrent)的有关数据。有疑问(DiSPutes)、不可识别(Nonidentifiable)的数
    据作为cookie存储(NID)。由于我们的网站以cookie的方式存储客户号,所以NID应该从列表中删除。
    CP应该匹配完整的策略;因此,如果你在CP中使用了NID,那么你应该在你的策略文件中包括<nonident/>标签。为了匹配这些设置
    而在下一节介绍的校验工具会对以上代码进行检查,如果有差异的话,Internet Explorer
    6.0浏览器也会检查策略文件并且令策略文件无效
    如果是asp/asp.net/jsp/php等动态页面,也可以添加类似以下代码:
    response.setHeader("P3P","policyref="http://www.mysite.com/w3c/p3p.xml"
    CP="ALL DSP COR CUR OUR IND PUR"");
  3. 在HTML内容中嵌入Link标签
    <link rel="P3Pv1"
    href="/w3c/p3p.xml"></link>

    来源: <http://hi.baidu.com/johnsoncr/item/94f1e93fe38713fdde2221e6>

来自为知笔记(Wiz)

时间: 2024-08-05 21:55:12

IE iframe cookie问题(p3p)的相关文章

Cookie安全小结

Cookie机制:一般来说,同域内浏览器中发出的任何一个请求都会带上Cookie,无论请求什么资源,请求时,Cookie出现在请求头的Cookie字段中.服务端响应头的Set-Cookie字段可以添加.修改和删除Cookie,客户端通过javascript也可以添加.修改和删除Cookie.另外,Cookie是无法跨浏览器存在的. 利用Cookie机制,我们可以存储用户的会话信息,比如,用户登认证后的Session,之后同域内发出的请求都会带上认证后的会话信息,很方便.也因此,攻击者特别喜欢盗取

解决Safari高版本浏览器中默认禁用第三方COOKIE(含demo)

前段时间在项目里遇到了一个比较头疼的问题,就是高版本的Safari中默认会阻止第三方cookie,这使得使用Safari浏览器的用户无法按照正常的业务逻辑进行操作. 问题展现 知识点 什么是第三方cookie呢?在访问一个网站A时,网站A算作第一方,如果网站A中引用了另一个网站B(网站B的域名与网站A的域名不同)的资源,这时这个网站B就被认为是第三方.需要注意的是,这儿区分不同网站的标准是域名是否相同,而不是这两个网站是否由同一个公司运营.比如,taobao.com和tmall.com被认为是两

Cookie Stuffing技术来做网站联盟 黑帽做网赚的方法一栏

这篇文章是以前研究 Cookie Stuffing 的时间收藏的其中一篇文章,在电脑里沉睡了很长时间,记得是一个叫伟超的哥们写的,贴出来给大家参考一下,很基础的技术扫盲贴. Cookie Stuffing技术就是无需直接访问你的affiliate页面便把特定的 Cookie植入访问者的电脑里,你的访问者不管以任何方式,只要 COOKIE存在,访问到商家网站,发生ACTION行为,你都可以获得收益. 上面的定义,翻译自维基百科,有点拗口,但应该能说明意思了.无论国内外的广告联盟,都是以 cooki

单点登录sso 、cookie跨域

setcookie();中的第五个参数是域名参数domain 这个参数如果是.domain.com那么这个cookie可以在主域名或者任意子域名都能够获取.相同域名下.子域名间可以相互共享.但是不相同的域名下不能直接共享. 不同(主)域名直接可以通过嵌套的方式生成cookie,通过A域名下的页面嵌套B域名下的连接,从而生成B域名的cookie.但是不能直接相互共享. 嵌套的方式在ie下可能会被阻止,不同的浏览器对第三方生成cookie是有着不同的权限的.因此用到p3p开启ie的权限允许第三方生成

Cookie提要

Cookie的基本概念和设置 Cookie在远程浏览器端存储数据并以此跟踪和识别用户的机制.从实现上说,Cookie是存储在客户端上的小段数据,浏览器(即客户端)通过HTTP协议和服务器端进行Cookie交互. 注意 这里说的是客户端而不是浏览器,实际能管理Cookie的不仅仅是浏览器,当然最常见的是由浏览器管理Cookie,后面的叙述中不再区分这两个概念. Cookie独立语言存在,也就是说,不论PHP还是JSP种下的Cookie,其本质都是一样的,客户端脚本(如JavaScript)均能读取

Web前端学习第三天(cookie 二)

HttpOniy Cookie机制 在http层面传输cookie,当设置HttpOnly标志后,客户端脚本就无法读写该cookie.可以用此防止xss攻击获取cookie <?php setcookie("test",1,time()+3600,"",0);//设置普通cookie setcookie("test_http",1,time()+3600,"","",0,1); //第7个参数(这里是

【转】Web前端黑客技术揭秘{笔记}

原文 http://www.cnblogs.com/r00tgrok/articles/Web-Hacking.html 前些日子看完了白帽子讲Web安全,当时就PHP安全一 章做了点小笔记,感觉看书还是留下点东西比较好.翻开Web前端黑客技术揭秘一书决定要做笔记,但是这样下来其实进度就比较慢了,敲字做笔记绝对远比看书 来的慢.有时候上午看完的内容做笔记时要花一天时间,一方面是要敲字,另一方面是自己只从书上摘录部分内容有时候需要将其串起来,还有就是碰上自己想发两 句言也会拖慢进度.总之现在书是看

入门书籍 web前端开发最佳实践

高效web前端开发  book PageSpeed  出自google公司  是一款  免费的工具  性能分析 Timeline网页交互  和渲染  所要花费的时间 Profile谁  可以查看网页cpu以及内存占有的情况报告 Audits  中提供了各种资源及配置的优化建议和未使用的css规则的列表 代码的压缩 文本服务器开启Gzip压缩. UglifyJs  不仅仅是一个压缩工具,同事具有JS语法分析和代码美化工能 图片压缩工具  以在线工具居多  TinyPNG  压缩  PNG格式图片.

P3P解决cookie存取的跨域问题

最近在做一个流量统计的东西的时候,偶然发现IE在对iframe里面的页面写Cookie的时候有一些安全限制,导致读取Cookie不成功,找了好长时间的解决办法,重要找到如下的办法: 1.页面里的COOKIE不能是浏览器进程的COOKIE(包括验证票和不设置超时时间的COOKIE),否则跨域会取不到.这点做跨域COOKIE的人比较少提到.不过实际上留意下几家大学做的方案,有细微的提到他们的验证模块里的COOKIE是有设置超时时间的. 2.当利用IFRAME时,记得要在相应的动态页的页头添加一下P3