什么是第三方cookie跨域的问题呢? 例如:在A网站中iframe B网站中的网页,如果IE浏览器的安全级别设置到中或更高的级别,那么B网站中的网页cookie就会出现不一致的问题或者受到限制不允许使用,如果把IE浏览器的安全级别设置到低那么第三方cookie就可以正常的使用但是cookie的一致性不能保证.这个问题原因就在于大多数cookie都是使用IE浏览器的cookie隐私策略.如果想解决第三方cookie跨域的问题那么就要建立自己站点的cookie隐私策略------------P3P(Platform for Privacy Preferences)
2 P3P(Platform for Privacy Preferences)
P3P(Platform for Privacy Preferences):P3P是万维网联盟(W3C)公布的一项隐私保护推荐标准,旨在为网上冲浪的Internet用户提供隐私保护。现在有越来越多的网站在消费者访问时,都会收集一些用户信息。制定P3P标准的出发点就是为了减轻消费者因网站收集个人信息所引发的对于隐私权可能受到侵犯的忧虑。P3P标准的构想是:Web 站点的隐私策略应该告之访问者该站点所收集的信息类型、信息将提供给哪些人、信息将被保留多少时间及其使用信息的方式,如站点应做诸如 “本网站将监测您所访问的页面以提高站点的使用率”或“本网站将尽可能为您提供更合适的广告”等申明。访问支持P3P网站的用户有权查看站点隐私报告,然后决定是否接受cookie或是否使用该网站。
随着Internet的发展,电子商务发展势头也异常迅猛。这种新的贸易方式在带给人们难以想象的便利前提下,也给人们带来了以往现金交易模式下所没有的麻烦——通过网络泄露个人隐私数据。
举个例子,进入药店,店员彬彬有礼的笑脸相迎:“尊敬的XX,欢迎您第X次光临本店,上次您在我们这里购买XX药品,本店对这种病又进了一些疗效突出的新药,需要我带路吗?”尽管店员微笑服务,但大家是否有一种隐私被窥探的感觉?在家中,我们可以放下厚厚的窗帘,但是在网上,我们早已在不知不觉中把自己出卖。当我们进入网站,就开始被跟踪,机器忠实地记录着你所浏览过的网页和商品,而这一切都是我们不希望发生的。
其实,用户对网络隐私的担心和忧虑,主要是缺乏对所填写信息是否受到保护的了解。如果网络能够让用户清晰地明白网站会将用户个人信息做何种处理,用户就会感觉到放心多了。
P3P可定义为:P3P提高了用户对个人隐私性信息的控制权。用户在P3P提供的个人隐私保护策略下,能够清晰地明白网站对自己隐私信息做何种处理,并且P3P向用户提供了个人隐私信息在保护性上的可操作性。
从技术上看,P3P包括了两个组件:一个放在服务器端;另外一个放在客户端,形成一个用户代理。当用户登陆网站的时候,服务器端的组件根据网站的要求,会自动生成XML语言形式的用户个人处理策略,这就像是贴在商店橱窗外的公众告示,而客户端的组件就将这个“公众告示”提供给用户。P3P是一个扩展语法和数据元集,它受RDF(Resource Description Framework,资源描述框架) 语言的规范。它允许用户通过浏览器与网站,通过临时或是成对的ID(TU ID/PU ID)进行协商,以明确可以透露哪些个人信息并且作何用途 。临时ID仅可以持续一个用户对话期,而成对的ID则可以维持多个对话期,这些ID并不带有辅助数据,而且不会被储存。 双方最终通过一个双向的选择达成用户个人隐私策略。P3P并不会使现有的PICS(Platform for Internet Content Selection因特网内容选择平台)标准失效,它仅仅是一个内容标记方案。RDF和XML目前虽然并未被PICS采用,但会在其未来的版本中派上用场。
P3P的工作方式为:得到P3P软件的用户可以将他的个人隐私偏好设定在该软件的选项中,软件默认值设定为:当任何网站收集或贩卖个人网上信息的时候,禁止进入该站点或者提醒用户。一旦设定,该软件将同用户的浏览器程序一同运行,每一个受访的站点都会发送某种形式的机器语言提议到用户的电脑中,这个提议包括了网站需要用户提供的个人隐私信息以及对这些信息所做的处理。如果该站点的信息收集行为同用户的P3P中设定的标准相符,则两者之间关于个人隐私信息的协定就可以自动地缔结,而用户亦可毫无阻碍地浏览该站点;但是如果不符,P3P将会用红绿灯的简单方式提醒用户,用户必须迅速地决定是否对自己制定的个人隐私策略作出修改以进入该网站,这通常会以对话框的形式出现,目的是方便用户做出选择。
P3P并不向所有的用户提供任何的强制力,那么当网站的行为违背了它自己的承诺怎么办呢?比如:它向用户承诺不将用户的个人隐私数据做任何第二用途,因此用户向它提交了个人隐私数据,然而网站却私下又将这些数据转卖给其他的商业组织或个人。P3P在内部设置了一个仲裁小组,这个仲裁小组要求网站向它提供用户和网站对个人隐私数据的第二用途发生争执时的解决方法,而且还包括当用户发现网站违反了双方达成的个人隐私策略时,网站应该向用户提供的补偿办法。
如果在线个人隐私能够真正得到切实有效的保护,则有望使更多的消费者对基于Internet的电子商务充满信心并参与其中,从而为电子商务的长远发展奠定基石。
建立P3P策略需要三个步:
第一步:
在Apache的应用目录下建立w3c文件夹以便存放p3p.xml和policy.p3p文件P3P.xml文件作用就是指定用来声明网站使用了哪些P3P文件,而policy.p3p就是P3P策略文件.
第二步:
在w3c目录下建立p3p.xml文件,文件内容如下:
<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>指定
在w3c目录下建立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
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 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>
P3P策略文件还可以用工具生成例如:IBM P3P Policy Editor
第三步: 在Apache的配置文件httpd.conf中引用p3p策略
在httpd.conf中加入Header set P3P 'CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR" policyref="/w3c/p3p.xml"'
CP代表这策略的参数
Policyref代表引用p3p策略存放的位置
做完这三步以后我们的站点就拥有了自己的p3p隐私策略了.