您的位置:首页 > 其它

P3P 跨域访问第三方cookie的解决方案 适合解决UC的同步登录问题

2012-03-26 10:00 1006 查看
一直没找到这篇文章的出处我,网上搜索到的都是转载的,先转过来当存档吧。

以下是转载的内容:

背景介绍

我所在的公司是一个集团公司,在国内外有若干个分公司和办事处,每个分公司都有一个局域网,另外公司总部还负责维护着一个Internet网站。各个分公 司内部局域网都使用同一套B/S结构的业务操作系统,同时Internet网站上还有一套业务跟踪系统,也是B/S结构。两者都使用ASP开发。现在因为 业务需要,要在内部的业务操作系统中和Internet的业务跟踪系统交互。由于两个系统都是B/S结构,而且界面也很相似,为了防止操作人员工作时混淆 (将内部业务数据发布到Internet业务跟踪系统上),技术主管决定将Internet跟踪系统使用<IFRAME>内嵌在内部业务系统
的一个特定asp文件中。

两边的开发工作很快结束。但在将Internet跟踪系统内嵌进内部业务系统后却无法实现Internet跟踪系统的登录。原因很快找到--因为IE 6的增强安全机制,通过<IFRAME>内嵌一个三方网页时,缺省设置不允许使用该第三方的cookie。不允许使用cookie就意味着无 法使用Session。没有Session自然无法登录。

该问题的解决也很简单,只要在IE的Internet选项--》隐私--》高级中将"覆盖自动cookie处理"选中,然后选择接受第一方cookie和接受第三方cookie即可。

但是,这一解决方法被技术主管否决,理由是对一个连设置IE主页都需要指导的操作人员,要其更改IE的隐私策略预计将是一件非常困难的事。而且各分公司分 散在各地,使用B/S系统就是为了方便维护和更新,如果系统更新涉及客户端,那就难免会有遗漏和延迟。就算能够准时准确的更新,公司的电脑也会有淘汰和重 装操作系统的时候,我们不可能要求操作人员记住每次电脑重装后还要检查IE的隐私策略是否正确。

在修改IE隐私策略这条路堵死以后,我将目光定位于IE隐私策略的声明上,默认的IE隐私策略设置为中,具体设置包括“阻止没有合同隐私策略的第三方cookie”。那么如果有"合同隐私策略"是否就行了呢?通过Google得知这就是P3P(Platform. for Privacy Preferences)。接下来就是如何设置网站的P3P了。经过一番摸索,总算对P3P有了一点眉目。中间过程就不废话了,这里只告诉大家具体怎么操 作。如果有人对P3P有兴趣,请参考

P3P的官方网站http://www.w3.org/P3P/

P3P三步曲

第一步,在目标网站(就是你希望将其嵌入<IFRAME>的第三方网站,在这个例子中就是公司的Internet网站)的根目录下建立一个名 为w3c的目录,名字其实无所谓,但是下面的例子中都是用/w3c做路径,所以在你看完这篇文章前请照做。在其下建立一个名为p3p.xml的文件,该文 件相当于一个目录,用来声明网站使用了哪些P3P文件。具体文件内容如下:

<META. xmlns="http://www.w3.org/2002/01/P3Pv1">
<POLICY-REFERENCES>
<POLICY-REF about="/w3c/policy.p3p#PrivacyPolicy">
<INCLUDE>/*</INCLUDE>
<COOKIE-INCLUDE/>
</POLICY-REF>
</POLICY-REFERENCES>
</META>


其中<META>的xmlns是xml的名称空间声明,除非P3P标准发生变化,否则固定不变。<POLICY-REF>的about便是完整的P3P文件定位。其下的<INCLUDE>用来指定该P3P文件适用的范围。相应的,不适用的范围 用<EXCLUDE>指定。值/*表示根目录下的所有文件(含目录)。写过ASP.net的配置文件的人对/*这种写法一定不陌生^_^。<COOKIE-INCLUDE>表示该P3P文件适用于cookie。因此,完整的含义就是该P3P文件对网站根目录下的所有文件 和cookie都适用。如果网站有多个P3P文件,每个P3P文件适用不同的目录,那么只要设定多个<POLICY-REF>,并指定每
个<POLICY-REF>的<INCLUDE>和<EXCLUDE>即可。

第二步,同样是在w3c目录下,建立一个名为policy.p3p的文件,该文件也是一个xml文件,具体内容如下(这个例子来源于http://www.bravenet.com/w3c/policy.p3p,仅做学习参考使用,该文件版权归www.bravenet.com所有,任何人不经www.bravenet.com同意不得以商业目的复制,传播,销售该文件):

<?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
discuri="http://www.bravenet.com/global/privacy.php"
name="PrivacyPolicy">
<!-- Description of the entity making this policy statement. -->
<ENTITY>
<DATA-GROUP>
<DATA ref="#business.contact-info.online.email">support@bravenet.com</DATA>
<DATA ref="#business.contact-info.online.uri">http://www.bravenet.com</DATA>
<DATA ref="#business.name">Bravenet Web Services</DATA>
</DATA-GROUP>
</ENTITY>

<!-- Disclosure -->
<ACCESS><nonident/></ACCESS>

<!-- Disputes -->
<DISPUTES-GROUP>
<DISPUTES resolution-type="service" service="http://bravenet.supportclient.com" short-description="New Dispute">
<LONG-DESCRIPTION>Please contact our support department if you have any problems.</LONG-DESCRIPTION>
<REMEDIES><correct/></REMEDIES>
</DISPUTES>
</DISPUTES-GROUP>

<!-- Statement for group "Basic information" -->
<STATEMENT>
<EXTENSION ptional="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 ptional="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" ptional="yes"><CATEGORIES><state/></CATEGORIES></DATA>
</DATA-GROUP>
</STATEMENT>
<!-- End of policy -->
</POLICY>
</POLICIES>


由此可以看出P3P的设置还是很繁琐的。所以一些公司已经开发P3P的编辑工具。像这个例子就是由IBM P3P Policy Editor生成的。其实如果你像我一样仅仅为了覆盖IE的cookie设置,完全不必下载那些编辑工具,只要将这份文件中的几个关键位置修改一下即可 (其实我就是这么做的^_^)。

废话少说,该P3P文件中几个关键的地方包括:

<POLICY>下的discuri,其值是一个URL,用于指定网站的完整隐私政策声明。IE在显示网站的隐私策略时,会显示该连接,用户 点击该连接后IE就会新开一个窗口,并在新窗口中打开该URL,所以最好指定一个实际的URL。name就是该POLICY的名称,一个P3P文件可以包 含多个P3P声明,每个P3P声明都包含一个名字,而在第一步中<POLICY-REF>的about包含的"/w3c /policy.p3p#PrivacyPolicy"中"/w3c/policy.p3p"就是该P3P文件的URL,#后面就是所用的p3p声明。所
以务必保证二者一致,包括大小写(xml是区分大小写的)。

接下来是<DATA-GROUP>,<DATA-GROUP>下面<DATA>的ref有很多种值,其 中#business.name的值是IE在显示网站的隐私策略时,该P3P声明的名字,也就是标题。同时该标题也是一个连接,用户点击后也会打开一个新 窗口,URL就是#business.contact-info.online.uri的值,通常就是网站的域名。 而#business.contact-info.online.email相当于联系用的email.

另一个比较重要的是<DISPUTES-GROUP>下<DISPUTES>的service和short-description。IE在显示网站的隐私策略时,最后会显示"这个网站如何处理有关收集的信息的争议?",相当于用户在不满意该P3P声明时怎么处 理。short-description就是你想显示的文字,而service则是用户点击该文字后IE的所打开的新窗口的URL。比如你可以将short-description值设置成"请联系我们",然后service设置成网站的contact页面。那么用户看到的将是

这个网站如何处理有关收集的信息的争议?

请联系我们

用户点击后就转到contact页面。

该P3P文件的其他部分保持不变就可以了。有兴趣的自己到网上去查解释吧。

改好后保存。

再次提醒,请保持第一步中的p3p.xml中<POLICY-REF>的about和本P3P文件的文件名,URL路径,<POLICY>的name值一致。

第三步,完成前面两步后表示我们的网站已经具备了P3P,但是用户在浏览网站时,他的IE又如何知道该网站有P3P呢?所以我们还要通过IIS告诉IE网站的P3P在哪。通过设置网站的HTTP头可以达到这一目的。具体操作如下:

打开IIS后查看网站的属性,选择"HTTP头",在"自定义HTTP头"中点击"添加..."按钮,在弹出的对话框中,"自定义头名称"和"自定义头值"分别填上

P3P



CP="IDC DSP COR NID CUR OUR NOR" policyref="/w3c/p3p.xml"

。然后按确定应用保存。

上面的HTTP头值中的CP是简洁策略(Compact Policy)的缩写,其值由一些3字母缩写组成。这些3字母缩写的含义有兴趣的请参考W3C网站。不知道如何设置的保持上面就可以了。而policyref就是指定p3p声明的位置。在这个例子中就是/w3c/p3p.xml。

好了,现在打开IE,浏览一下这个"第三方"网站,在IE菜单栏上选"查看",点击"隐私报告...",选择一个该网站的页面,然后点击"摘要"。如果没有问题的话,就可以看到P3P声明了。

其它参考资料:

通过设置P3P头来实现跨域访问COOKIE

http://blog.csdn.net/mybluesky1983/article/details/7015760
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: