关于P3P同源策略的问题【cookie被阻挡或限制】

关于P3P同源策略的问题【cookie被阻挡或限制】 - 我遇见你

关于P3P同源策略的问题【cookie被阻挡或限制】

 

今天在一外部网站调用我们的JS的时候发现了一个问题:
在IE浏览器 附加组件栏 出现一个 小眼睛 而且 我们的js无法在外部网站正常调用执行。
点击小眼睛发现提示 【基于您的隐私设置,某些Cookie限制或被阻挡】
然后列表里看到了,访问我们网站的路径,无论图片还是样式css,js等都让阻挡了。

之后就百度,谷歌大神的搜索,终于发现了是因为p3p 同源策略问题,下面我来说一下对遇到这样问题的解决方法:

先列问题:
1、什么是p3p,有什么用?
2、怎么在自己的网站上实现p3p策略?
3、p3p文件如何编写,部署,验证等?
4、如何检测自己的网站是否实现了p3p?

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

以上我们简要地谈了一下什么是P3P,有兴趣的不妨点击
http://www.w3.org/P3P,访问官方P3P网页以获取更多技术信息

我们为什么需要了解一点P3P?
您一定听说过cookie,cookie 是由 Web 站点创建的小文本文件,存储在您的计算机上。这样,当您下一次访问该站点时,它可以自动获取有关您的信息,例如浏览喜好,或您的姓名、地址及电话号码。过去一般认为绝大多数Internet用户能够接受cookie,毕竟,只有那些患有妄想狂的人才会因恐惧而拒绝cookie,不是吗?然而,这种假设在过去或许能够成立,而现在则未必。

注:IE浏览器默认的隐私安全策略是中,可以点击【Internet选项】【隐私】查看。
它的提示为:“阻止没有合同隐私策略的第三方cookie;阻止使用个人可标识信息而没有您的隐含许可的第三方cookie;限制使用个人可标识信息而没有隐含许可的第一方cookie”

我们上面遇到的问题就是没有合同隐私策略的第三方cookie; 问题的原因找到了,

-------------------------------------------------------------------------------------

2、下面我们该想如何让自己的网站实现p3p策略?
这个时候我找到一篇文章【关于p3p 简洁策略,以及浏览器的支持情况】
连接: http://www.cnblogs.com/_franky/archive/2011/03/16/1985954.html
作者很详情的说了p3p以及 各个浏览器对p3p的支持,但对如何给本站编写一个p3p文件,如何部署没有更详细。

P3P的实现
P3P的功能有三个部分组成:一个或者多个策略文件、策略参考文件和源自服务器的HTTP报头。策略文件应该存放在Web服务器的w3c目录下(/w3c)。
我们创建以下三个文件:
1. 策略参考文件(P3P.xml)


<?xml version="1.0" encoding="UTF-8"?>
<META xmlns=" http://www.w3.org/2001/09/P3Pv1">
   <POLICY-REFERENCES>
      <POLICY-REF about="/w3c/policy.p3p#PrivacyPolicy">
      <INCLUDE>/*</INCLUDE>
      </POLICY-REF>
   </POLICY-REFERENCES>
</META>


2. 创建策略文件(Policy.p3p)、


<?xml version="1.0"?>
<POLICIES xmlns=" http://www.w3.org/2002/01/P3Pv1">
<!-- Generated by IBM P3P Policy Editor version Beta 1.10 built 2/19/02 2:42 PM -->
<!-- Expiry information for this policy -->
<EXPIRY max-age="604800"/>
<POLICY name="PrivacyPolicy">
    <!-- Description of the entity making this policy statement. -->
    <ENTITY>
    <DATA-GROUP>
        <DATA ref="#business.contact-info.online.email">zyj10222@126.com</DATA>
        <DATA ref="#business.contact-info.online.uri"> http://www.imeetyou.net</DATA>
        <DATA ref="#business.name">test</DATA>
    </DATA-GROUP>
    </ENTITY>
    <!-- Disclosure -->
    <ACCESS><nonident/></ACCESS>
    <!-- Disputes -->
    <DISPUTES-GROUP>
        <DISPUTES resolution-type="service" service=" http://www.imeetyou.net" short-description="New Dispute">
            <LONG-DESCRIPTION>test.</LONG-DESCRIPTION>
            <REMEDIES><correct/></REMEDIES>
        </DISPUTES>
    </DISPUTES-GROUP>
    <!-- Statement for group "Basic information" -->
    <STATEMENT>
        <EXTENSION optional="yes">
            <GROUP-INFO xmlns=" http://www.software.ibm.com/P3P/editor/extension-1.0.html" name="Basic information"/>
        </EXTENSION>
        <!-- Consequence -->
        <CONSEQUENCE>Data collected from all Web users: access logs, and search strings (if entered).</CONSEQUENCE>
        <!-- Use (purpose) -->
        <PURPOSE><admin/><develop/></PURPOSE>
        <!-- Recipients -->
        <RECIPIENT><ours/></RECIPIENT>
        <!-- Retention -->
        <RETENTION><stated-purpose/></RETENTION>
        <!-- Base dataschema elements. -->
        <DATA-GROUP>
            <DATA ref="#dynamic.clickstream"/>
            <DATA ref="#dynamic.http"/>
        </DATA-GROUP>
    </STATEMENT>
    <!-- Statement for group "Cookies" -->
    <STATEMENT>
        <EXTENSION optional="yes">
            <GROUP-INFO xmlns=" http://www.software.ibm.com/P3P/editor/extension-1.0.html" name="Cookies"/>
        </EXTENSION>
        <!-- Consequence -->
        <CONSEQUENCE>Cookies are used to track visitors to our site, so we can better understand what portions of our site best serve you.</CONSEQUENCE>
        <!-- Use (purpose) -->
        <PURPOSE><admin/><develop/></PURPOSE>
        <!-- Recipients -->
        <RECIPIENT><ours/></RECIPIENT>
        <!-- Retention -->
        <RETENTION><stated-purpose/></RETENTION>
        <!-- Base dataschema elements. -->
        <DATA-GROUP>
            <DATA ref="#dynamic.cookies" optional="yes"><CATEGORIES><state/></CATEGORIES></DATA>
        </DATA-GROUP>
    </STATEMENT>
<!-- End of policy -->
</POLICY>
</POLICIES>



验证:
将以上文件放到 网站根目录的w3c 目录下。这个时候可以通过  w3c 的检测工具来 验证你写的是否正确: http://www.w3c.org/P3P/validator.html
对于站点的设置就完成了。

接下来对于服务器端的设置:

服务器端不听的服务器会面临不同的问题

如是iis 那么 如何将 IIS 配置为使用平台的隐私首选项 (P3P)?
在微软这里找到了支持: http://support.microsoft.com/kb/324013/zh-cn
如果是Apache
查看这里 : http://kb.cnblogs.com/a/1295695/


如果你在服务器端也设置好了。那么最好我们来验证一下我们的设置是否成功

这下 用 chorme 浏览器 的开发人员工具

刷新页面,在之前的图片,以及连接上查看header 信息就会出现你在 iis里设置的P3P 信息。

这样在用户访问的时候就不会出现 cookie被阻挡或限制 这样的提示了~!

关于p3p还有很多有意思的问题 比如
1、【用P3P解决第三方COOKIE存取的问题】
2、【过设置p3p头来实现跨域访问cookie】
而且有一本关于p3p 的书籍 O'Reilly的书《Web Privacy with P3P》

以上略叙遇见的问题,希望能对读者有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值