`
alex8946
  • 浏览: 359227 次
  • 性别: Icon_minigender_1
  • 来自: 广东广州
社区版块
存档分类
最新评论

用P3P解决第三方cookie存取的问题

阅读更多

初来乍到,看到一篇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 代码
  1. <?xml version="1.0" ?>    
  2. <POLICIES xmlns="http://www.w3.org/2002/01/P3Pv1">    
  3. <!-- Generated by IBM P3P Policy Editor version Beta 1.12 built 2/27/04 1:19 PM   
  4. -->    
  5. <!-- Expiry information for this policy   
  6. -->    
  7. <EXPIRY max-age="86400" />    
  8. <POLICY xml:lang="zh">    
  9. <!-- Description of the entity making this policy statement.   
  10. -->    
  11. <ENTITY>    
  12. <DATA-GROUP />    
  13. </ENTITY>    
  14. <!-- Disclosure   
  15. -->    
  16. <ACCESS>    
  17. <none />    
  18. </ACCESS>    
  19. <!-- No dispute information   
  20. -->    
  21. <!-- Statement for group "test"   
  22. -->    
  23. <STATEMENT>    
  24. <EXTENSION optional="yes">    
  25. <GROUP-INFO xmlns="http://www.software.ibm.com/P3P/editor/extension-1.0.html" name="test" />    
  26. </EXTENSION>    
  27. <!-- No consequence specified   
  28. -->    
  29. <!-- Use (purpose)   
  30. -->    
  31. <PURPOSE>    
  32. <!-- No purpose specified   
  33. -->    
  34. </PURPOSE>    
  35. <!-- Recipients   
  36. -->    
  37. <RECIPIENT>    
  38. <!-- No recipient specified   
  39. -->    
  40. </RECIPIENT>    
  41. <!-- Retention   
  42. -->    
  43. <RETENTION>    
  44. <indefinitely />    
  45. </RETENTION>    
  46. <!-- Base dataschema elements.   
  47. -->    
  48. <DATA-GROUP>    
  49. <DATA ref="#dynamic.cookies" />    
  50. <DATA ref="#dynamic.searchtext" />    
  51. <DATA ref="#user.name.middle" />    
  52. </DATA-GROUP>    
  53. </STATEMENT>    
  54. <!-- End of policy   
  55. -->    
  56. </POLICY>    
  57. </POLICIES>  

通过指定用户隐私策略,就可以达到存取第三方cookie的目的,看到这也许会觉得跟web应用毫无关系,真正的问题是如何让服务器来指定用户浏览器的隐私策略?

其实很简单,只要在响应用户请求的时候在http的头信息中增加关于p3p的配置信息就可以了
以下是我通过httpwatch插件看到的http响应的头信息:

 

用java实现这样的功能,只要在HttpServlet中加入
response.setHeader("P3P","policyref="http://www.xxxx.com/xxx/w3c/p3p.xml CP=\"NON DSP COR CURa ADMa DEVa TAIa PSAa PSDa IVAa IVDa CONa HISa TELa OTPa OUR UNRa IND UNI COM NAV INT DEM CNT PRE LOC\"");
就可以了

当然p3p还提供了一种简单的方式 ,来加载用户隐私策略
通过IBM p3p的工具可以看到,CP=后面的字符串分别代表不同的策略信息,只要在http响应的头信息中增加
response.setHeader("P3P","CP=\"NON DSP COR CURa ADMa DEVa TAIa PSAa PSDa IVAa IVDa CONa HISa TELa OTPa OUR UNRa IND UNI COM NAV INT DEM CNT PRE LOC\"");而无需指定隐私策略文件也可以达到指定隐私策略的目的

 

22222.JPG
 描述:  
 文件大小:  67 KB
 看过的:  文件被下载或查看 5 次

22222.JPG
下载
  • 大小: 18.7 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics