初识P3P

简介:
+关注继续查看
P3P主要应用于网站跨域访问方面,全称为隐私偏好设定平台(platform for privacy preference, P3P)。而谈到P3P就不得不提cookie。目前大部分网站应用都使用cookie进行某种行为,比如用户信息收集、用户上网行为分析以及session保持等等。但是在某些情况下,用户是不愿意使用cookie的。而禁止cookie又会妨碍用户使用某些重要的网站比如在线银行、网上购物等。所以微软从ie6开始启用P3P并可以自定义隐私策略来使用cookie,而Netscape 公司早在2002 年5 月便发布了Netscape Navigator 7 软件的测试版,该软件包括与IE6十分相近的P3P功能。
以IE7为例,我们来看看隐私策略的设置:
image
默认情况下,ie7启用隐私策略为中。可以看到有两个阻止一个限制。
这里解释一下第一方cookie和第三方cookie。第一方cookie是指你当前访问的站点的cookie。而第三方cookie是指不是你当前访问的站点的cookie。比如你当前访问的是[url]www.abc.com[/url],但是在这个网站上嵌入了其他网站(比如[url]www.xyz.com[/url]),那么属于abc.com这个域cookie就是第一方cookie,而属于xyz.com这个域的cookie就属于第三方cookie。
再来解释有两个阻止一个限制: 
第一个阻止(阻止没有紧凑隐私策略的第三方cookie),即为ie7发现存在没有紧凑隐私策略的第三方cookie时就将这个cookie在http的request中删除然后进行http请求(get或者post),“没有紧凑隐私策略”是指没有被P3P声明; 
第二个阻止(阻止保存...),即不保存这样的第三方cookie,因为有些cookie是有有效期的; 
第一个限制(限制保存...),即不保存这样的第一方cookie。
使用“中”的隐私策略等级,可以阻止任何没有被P3P声明的第三方cookie。可以通过ie浏览器的任务栏上面的“眼睛”来查看都阻止了哪些cookie。而有些业务又必须保证这些cookie不被拦劫,那这个时候就需要使用P3P了。
P3P通过为隐私策略提供一个标准的可机读格式,以及一个能使Web浏览器自动读取和处理策略的协议解决了这个问题。正因为此,万维网联盟(World Wide Web Consortium,W3C)制定了P3P,并把它作为Web 站点与它们的隐私策略相联系的标准方法。P3P可以启用可机读的隐私策略,而该隐私策略可以由Web浏览器和那些能显示符号、提示用户或采取其他适当行动的用户代理工具来自动获取。其中的一些工具也可以将各个策略与用户的隐私偏好相比较,并帮助用户决定何时与Web站点交换数据。
那么P3P到底是怎样工作的呢?这里只涉及到P3P的工作原理,如何实现P3P是需要写程序的,而程序本人一窍不通,所以不做介绍,有兴趣的可以google一下,到处都是。
上面提到了第三方cookie被P3P声明。P3P声明是什么意思呢?其实就是指在某一个HTTP的response的头部插入一个P3P的头,而在同一个response中的cookie就都被此P3P声明了。这个可以通过httpwatch来查看到。
image
IE浏览器看到这个response中包含有P3P的头,默认就将后面的cookie(cookie1,cookie2等第三方cookie)全部认为可信,后续的request中就会带下这些cookie一起下发请求。但是如果后续的某一个response中没有P3P头部,而同样设置了cookie1,那么在此response后续的request中就不会带有这个cookie1了。所以如果需要使得每次request都带有这些cookie,有两种方法:一是在一个response里插入P3P的同时插入所有相关的cookie,而后续的response中不要在插入这些cookie;而是在每个response中都是插入P3P头。一般情况下使用第二种比较保险。









本文转自 chris_lee 51CTO博客,原文链接:http://blog.51cto.com/ipneter/150968,如需转载请自行联系原作者

目录
相关文章
|
IDE Java 测试技术
Spring 5 启动性能优化之 @Indexed
背景 Spring 经过近20年的发展,目前版本已经迭代到了5.x,每个版本 Spring 都有不同的改进,版本 5.x 中,Spring 把重心放到了性能优化上。我们知道,Spring 注解驱动编程中,Spring 启动时需要对类路径下的包进行扫描,以便发现所需管理的 bean。如果在应用启动前能够确定 Spring bean,不再进行扫描,那么性能就会大大提高,Spring 5 对此进行了实现。
769 0
Spring 5 启动性能优化之 @Indexed
|
存储 API 开发工具
使用阿里云对象存储OSS+PicGo搭建图床
使用阿里云对象存储OSS+PicGo搭建图床
4506 0
使用阿里云对象存储OSS+PicGo搭建图床
|
Java
Java 内部类创建、调用外部方法
创建内部类对象应使用 外部类对象.new Inner()进行创建 内部类与外部类没有重名的方法,外部类对象可以直接调用外部类方法 内部类与外部类存在重名的方法,外部类对象必须使用 Outer.this.method() 来进行调用,否则优先调用内部类的方法
4154 0
|
安全 网络虚拟化 Shell
|
网络协议 C++
|
Web App开发 关系型数据库 MySQL