用P3P解决第三方cookie存取的问题
程序员文章站
2022-07-11 08:15:01
...
初来乍到,看到一篇cookie夸域的帖子,觉的他只是解决了跨二级域名的问题,自己曾经作过一个企业应用的sso,其中用到的p3p解决了cookie跨域的存取。
第一次发帖,请各位高手多多指教
首先介绍第一方Cookie和第三方cookie:
第一方Cookie是来自当前正在查看的网站,或者发送到当前正在查看的网站。
第三方Cookie是来自当前正在查看的网站以外的网站,或者发送到当前正在查看的网站以外的网站。第三方网站通常提供正在查看的网站上的内容。例如,许多站点使用来自第三方网站的广告,或者iframe的别的网站的url,这些第三方的网站可能使用的Cookie。
然后是P3P,Platform for Privacy Preferences:
P3P由万维网协会研制,它为Web用户提供了对自己公开信息的更多的控制。
支持P3P的Web站点可以为浏览者声明他们的隐私策略。
支持P3P的浏览器 则可以将Web站点的策略与用户的隐私偏好进行对比,并为用户提出不匹配的警告。
因此,用户可以被通知有关Web隐私的处理方式。
更详细的说明请看http://www.w3.org/P3P/的介绍
以上几乎都是废话,我自己的理解就是通过P3P 可以使 用户自己指定浏览器的隐私策略。而这里只用到了关于cookie的一些设置。
我们打开ie浏览器-->工具-->internet选项-->隐私分页 用户可以通过手工 “导入” 用户隐私策略文件
以下是一个用户隐私策略文件,我使用的是IBM p3p Policy Editor 生成的
<?xml version="1.0" ?>
- <POLICIES xmlns="http://www.w3.org/2002/01/P3Pv1">
- <!-- Generated by IBM P3P Policy Editor version Beta 1.12 built 2/27/04 1:19 PM
-->
- <!-- Expiry information for this policy
-->
<EXPIRY max-age="86400" />
- <POLICY xml:lang="zh">
- <!-- Description of the entity making this policy statement.
-->
- <ENTITY>
<DATA-GROUP />
</ENTITY>
- <!-- Disclosure
-->
- <ACCESS>
<none />
</ACCESS>
- <!-- No dispute information
-->
- <!-- Statement for group "test"
-->
- <STATEMENT>
- <EXTENSION optional="yes">
<GROUP-INFO xmlns="http://www.software.ibm.com/P3P/editor/extension-1.0.html" name="test" />
</EXTENSION>
- <!-- No consequence specified
-->
- <!-- Use (purpose)
-->
- <PURPOSE>
- <!-- No purpose specified
-->
</PURPOSE>
- <!-- Recipients
-->
- <RECIPIENT>
- <!-- No recipient specified
-->
</RECIPIENT>
- <!-- Retention
-->
- <RETENTION>
<indefinitely />
</RETENTION>
- <!-- Base dataschema elements.
-->
- <DATA-GROUP>
<DATA ref="#dynamic.cookies" />
<DATA ref="#dynamic.searchtext" />
<DATA ref="#user.name.middle" />
</DATA-GROUP>
</STATEMENT>
- <!-- End of policy
-->
</POLICY>
</POLICIES>
通过指定用户隐私策略,就可以达到存取第三方cookie的目的,看到这也许会觉得跟web应用毫无关系,真正的问题是如何让服务器来指定用户浏览器的隐私策略?
其实很简单,只要在响应用户请求的时候在http的头信息中增加关于p3p的配置信息就可以了
以下是我通过httpwatch插件看到的http响应的头信息:
第一次发帖,请各位高手多多指教
首先介绍第一方Cookie和第三方cookie:
第一方Cookie是来自当前正在查看的网站,或者发送到当前正在查看的网站。
第三方Cookie是来自当前正在查看的网站以外的网站,或者发送到当前正在查看的网站以外的网站。第三方网站通常提供正在查看的网站上的内容。例如,许多站点使用来自第三方网站的广告,或者iframe的别的网站的url,这些第三方的网站可能使用的Cookie。
然后是P3P,Platform for Privacy Preferences:
P3P由万维网协会研制,它为Web用户提供了对自己公开信息的更多的控制。
支持P3P的Web站点可以为浏览者声明他们的隐私策略。
支持P3P的浏览器 则可以将Web站点的策略与用户的隐私偏好进行对比,并为用户提出不匹配的警告。
因此,用户可以被通知有关Web隐私的处理方式。
更详细的说明请看http://www.w3.org/P3P/的介绍
以上几乎都是废话,我自己的理解就是通过P3P 可以使 用户自己指定浏览器的隐私策略。而这里只用到了关于cookie的一些设置。
我们打开ie浏览器-->工具-->internet选项-->隐私分页 用户可以通过手工 “导入” 用户隐私策略文件
以下是一个用户隐私策略文件,我使用的是IBM p3p Policy Editor 生成的
<?xml version="1.0" ?>
- <POLICIES xmlns="http://www.w3.org/2002/01/P3Pv1">
- <!-- Generated by IBM P3P Policy Editor version Beta 1.12 built 2/27/04 1:19 PM
-->
- <!-- Expiry information for this policy
-->
<EXPIRY max-age="86400" />
- <POLICY xml:lang="zh">
- <!-- Description of the entity making this policy statement.
-->
- <ENTITY>
<DATA-GROUP />
</ENTITY>
- <!-- Disclosure
-->
- <ACCESS>
<none />
</ACCESS>
- <!-- No dispute information
-->
- <!-- Statement for group "test"
-->
- <STATEMENT>
- <EXTENSION optional="yes">
<GROUP-INFO xmlns="http://www.software.ibm.com/P3P/editor/extension-1.0.html" name="test" />
</EXTENSION>
- <!-- No consequence specified
-->
- <!-- Use (purpose)
-->
- <PURPOSE>
- <!-- No purpose specified
-->
</PURPOSE>
- <!-- Recipients
-->
- <RECIPIENT>
- <!-- No recipient specified
-->
</RECIPIENT>
- <!-- Retention
-->
- <RETENTION>
<indefinitely />
</RETENTION>
- <!-- Base dataschema elements.
-->
- <DATA-GROUP>
<DATA ref="#dynamic.cookies" />
<DATA ref="#dynamic.searchtext" />
<DATA ref="#user.name.middle" />
</DATA-GROUP>
</STATEMENT>
- <!-- End of policy
-->
</POLICY>
</POLICIES>
通过指定用户隐私策略,就可以达到存取第三方cookie的目的,看到这也许会觉得跟web应用毫无关系,真正的问题是如何让服务器来指定用户浏览器的隐私策略?
其实很简单,只要在响应用户请求的时候在http的头信息中增加关于p3p的配置信息就可以了
以下是我通过httpwatch插件看到的http响应的头信息:
上一篇: static方法可以调用非静态方法吗
下一篇: 评论字数长度分布测试