转:简单介绍 P3P 技术

时间:2021-10-12 14:23:55

原文来自于:http://blog.csdn.net/ghj1976/article/details/4889219

以 Internet Explorer 为例,默认情况下,IE的隐私策略如下图所设:

转:简单介绍 P3P 技术(图一)

请注意其中这一条:阻止保存可用来联系您的信息而没有您的明确同意的第三方Cookie。

下面我们首先来演示一下,这一条起作用的情况:

站点 b.com 有这样一个网页: http://b.com/WebApp_P3P/p3p.htm

这个页面的源代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>P3P Test</title>
</head>
<body>
1232sasdsa<br/>
<iframe src="http://a.net/WebApp_P3P/a_setcookie.aspx" ></iframe>
</body>
</html>

这个源代码中用 iframe 包含了 a.net 站点的一个页面。  这时候所谓的的第一方站点就是 b.com 站点,第三方站点就是 a.net 站点。

http://a.net/WebApp_P3P/a_setcookie.aspx 的功能很简单,就是写一个长期保存的Cookie,代码如下:

<%@ Page Language="C#" AutoEventWireup="true" %>
<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd">
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
HttpCookie hc = new HttpCookie("ghj", string.Format("aaaa_{0}_{1}", DateTime.Now, Request.Url));
hc.Domain = ".a.net";
hc.Expires = DateTime.Now.AddDays(14);
hc.Path = "/";
Response.Cookies.Add(hc);
Response.Write("aaaa");
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>p3p test</title>
</head>
<body>
</body>
</html> 当我们访问 http://b.com/WebApp_P3P/p3p.htm 地址时,情况如下,

转:简单介绍 P3P 技术 (图二)

注意, 中间的 转:简单介绍 P3P 技术  (图三)提示,我们双击这个图标可以看到下面窗体

转:简单介绍 P3P 技术 (图四)

我们另外写一个页面 http://a.net/WebApp_P3p/a_getcookie.aspx 来获取Cookie, 代码如下:

<%@ Page Language="C#" AutoEventWireup="true" %>
<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd">
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
if (Request.Cookies.AllKeys.Contains<string>("ghj"))
this.Label1.Text = Request.Cookies["ghj"].Value;
else
this.Label1.Text = "null";
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>P3P Demo</title>
</head>
<body>
<form id="form1" runat="server" style="height:100%">
<asp:Label ID="Label1" runat="server" Text="Label" /><br/>
</form>
</body>
</html>

我们首先访问 http://b.com/WebApp_P3P/p3p.htm  ; 然后访问 http://a.net/WebApp_P3p/a_getcookie.aspx  这个页面,我们会发现,没有Cookie。

类似的,我们用下面几种写法,都是一样的,无法在第三方网站创建Cookie。

<script src="http://a.net/WebApp_P3P/a_setcookie.aspx" ></script>
<img src="http://a.net/WebApp_P3P/a_setcookie.aspx" />
<!-- 只要是任何访问第三方网站的方式,第三方网站都无法书写Cookie,这里只只罗列了几种常见的方式 -->

上面的演示,你本机也可以进行,只需要做如下修改:

使用后面命令 notepad C:/Windows/System32/drivers/etc/hosts 打开 hosts文件,确保 hosts文件增加下面2两行:

127.0.0.1       a.net 
127.0.0.1       b.com

如果解决这个问题呢?

一个非常简单的解决方案就是修改 http://a.net/WebApp_P3P/a_setcookie.aspx  文件,在其中增加下面一行代码:

Response.Headers.Add("P3P", "CP=/"CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR/"");

这行代码就是一个简单的P3P应用,那P3P又是啥呢?

P3P(Platform for Privacy Preferences)(隐私权偏好选项平台)是W3C(World Wide Web Consortium)公布的一项隐私保护推荐标准。Microsoft Internet Explorer 6 (IE6) 是第一个支持这项新隐私权标准的浏览器。 Firefox目前还不支持 P3P 安全特性。 采用 P3P 之后,您可以设置浏览器自动侦测网站是否:收集个人标识信息、使用这些信息创建用户档案、或允许到访者拒绝数据收集。

具备 P3P 能力的浏览器具有一些可供您选择的默认选项。 或者您也可以通过回答问题的方式(例如您愿意分享哪些数据、愿意接受哪些类型的 Cookie 文件)自定义您的设置。 当您在 Web 浏览时,这个软件会判断您的隐私权偏好选项是否与网站的数据收集做法匹配。

具备 P3P 能力的浏览器会特别注意 Cookie。 Cookie 是留存在您计算机硬盘上的一段文本,它可以让 Web 应用程序以个体方式对您响应。 通过收集和记忆您的偏好选项信息,Web 应用程序可以根据您的需求、喜欢什么、不喜欢什么等来修改它的运作模式。 使用具备 P3P 能力的浏览器,您可以选择是否接受各种类型的 Cookie,例如阶段性(暂时性)、永久性、在指定的网域之内或之外(第三方),以及有没有特殊的 ”P3P 精简政策” (P3P compact policy) 文件。 精简 P3P 政策描述了给定 Cookie 的属性。

对于上面的只是, Internet Explorer 就体现在本文第一张图上对浏览器隐私的设置上。以及进一步的设置中,图四中,我们选中站点,摘要按钮就可以用了,点击摘要按钮可以看到下面信息:

转:简单介绍 P3P 技术 
(图五)选中站点,摘要按钮就可以用了,点击摘要按钮

转:简单介绍 P3P 技术
(图六)隐私策略调整窗口

从技术上看,P3P包括了两个组件:一个放在服务器端;另外一个放在客户端,形成一个用户代理。当用户登陆网站的时候,服务器端的组件根据网站的要求,会自动生成XML语言形式的用户个人处理策略,这就像是贴在商店橱窗外的公众告示,而客户端的组件就将这个“公众告示”提供给用户。

上面例子中隐私策略中 CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR 的意思是啥。 Fiddler可以方便的知道,在Fiddler 中我们可以看到如下信息:

Response sets a cookie: 
    Set-Cookie: ghj=aaaa_2009/11/27 15:55:56_http://a.net/WebApp_P3P/a_setcookie.aspx; domain=.a.net; expires=Fri, 11-Dec-2009 07:55:56 GMT; path=/

P3P Header is present: 
    CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"

Compact Policy token is present. A trailing 'o' means opt-out, a trailing 'i' means opt-in.

CURa 
Information is used to complete the activity for which it was provided.

ADMa 
Information may be used for the technical support of the Web site and its computer system.

DEVa 
Information may be used to enhance, evaluate, or otherwise review the site, service, product, or market.

PSAo 
Information may be used to create or build a record of a particular individual or computer that is tied to a pseudonymous identifier, without tying identified data (such as name, address, phone number, or email address) to the record. This profile will be used to determine the habits, interests, or other characteristics of individuals for purpose of research, analysis and reporting, but it will not be used to attempt to identify specific individuals.

PSDo 
Information may be used to create or build a record of a particular individual or computer that is tied to a pseudonymous identifier, without tying identified data (such as name, address, phone number, or email address) to the record. This profile will be used to determine the habits, interests, or other characteristics of individuals to make a decision that directly affects that individual, but it will not be used to attempt to identify specific individuals.

OUR 
We share information with ourselves and/or entities acting as our agents or entities for whom we are acting as an agent.

BUS 
Info is retained under a service provider's stated business practices. Sites MUST have a retention policy that establishes a destruction time table. The retention policy MUST be included in or linked from the site's human-readable privacy policy.

UNI 
Non-financial identifiers, excluding government-issued identifiers, issued for purposes of consistently identifying or recognizing the individual. These include identifiers issued by a Web site or service.

PUR 
Information actively generated by the purchase of a product or service, including information about the method of payment.

INT 
Data actively generated from or reflecting explicit interactions with a service provider through its site -- such as queries to a search engine, or logs of account activity.

DEM 
Data about an individual's characteristics -- such as gender, age, and income.

STA 
Mechanisms for maintaining a stateful session with a user or automatically recognizing users who have visited a particular site or accessed particular content previously -- such as HTTP cookies.

PRE 
Data about an individual's likes and dislikes -- such as favorite color or musical tastes.

COM 
Information about the computer system that the individual is using to access the network -- such as the IP number, domain name, browser type or operating system.

NAV 
Data passively generated by browsing the Web site -- such as which pages are visited, and how long users stay on each page.

OTC 
Other types of data not captured by the above definitions.

NOI 
Web Site does not collected identified data.

DSP 
The privacy policy contains DISPUTES elements.

COR 
Errors or wrongful actions arising in connection with the privacy policy will be remedied by the service.

Validate at: http://www.w3.org/P3P/validator.html 
Learn more at: http://www.fiddler2.com/redir/?id=p3pinfo

P3P这个Http头的写法有很多组合,自己写很痛苦,通过下面这个连接 http://www.w3.org/P3P/details.html 您可以找到一些P3P策略生成器软件包。(虽然如果在Google上搜索,您会发现更多搜索结果,但提供免费使用的好象只有IBM的P3P策略编辑器IBM's P3P Policy Editor。)

注意:

Visual Studio 自带的开发站点(ASP.NET Development Server)是不支持这个功能的,它会报错误:This operation requires IIS integrated pipeline mode.

参考资料:

用P3P解决第三方cookie存取的问题 
http://www.javaeye.com/topic/94336

IBM P3P Policy Editor 
http://www.alphaworks.ibm.com/tech/p3peditor

How to configure IIS to use Platform for Privacy Preferences (P3P) 
http://support.microsoft.com/kb/324013/en-us

How to Deploy P3P Privacy Policies on Your Web Site 
http://msdn.microsoft.com/en-us/library/ms537341(VS.85).aspx

Add a Custom HTTP Response Header (IIS 7) 
http://technet.microsoft.com/en-us/library/cc753133(WS.10).aspx

私有参数选择平台——P3P(关于Cookies) 
http://www.yxl.cn/Info/20060302,212041,5095.html

使用P3P 
http://welcome.hp.com/country/cn/zh/privacy/p3p_popup.html

用P3P header解决iframe跨域访问cookie/session 
http://blog.csdn.net/Hashxu/archive/2009/01/02/3684402.aspx

利用P3P跨域传COOKIE 
http://hi.baidu.com/thinkinginlamp/blog/item/5e2a02084f1dafd163d9865f.html

使用p3p解决Iframe中cookie跨域问题 
http://blog.ntsky.com/p3p-iframe-cookie.html

通过设置P3P头来实现跨域访问COOKIE 
http://blog.c114.net/html/38/193738-35549.html

P3P 
http://www.hudong.com/wiki/p3p

Cookie, iframe 与 P3P 的那点事儿 
http://www.dbanotes.net/web/cookie_p3p.html

Firefox Help:  Firefox's Cookie Options 
http://mozilla.gunnars.net/firefox_help_firefox_cookie_tutorial.html

ie session丢失 ie中iframe丢失问题 
http://wangzi6hao.javaeye.com/blog/531524

转:简单介绍 P3P 技术的更多相关文章

  1. Lucene&period;net站内搜索—4、搜索引擎第一版技术储备(简单介绍Log4Net、生产者消费者模式)

    目录 Lucene.net站内搜索—1.SEO优化 Lucene.net站内搜索—2.Lucene.Net简介和分词Lucene.net站内搜索—3.最简单搜索引擎代码Lucene.net站内搜索—4 ...

  2. Linux 下UVC&amp&semi;amp&semi;V4L2技术简单介绍&lpar;二&rpar;

    通过前文Linux 下UVC&V4L2技术简单介绍(一)我们了解了UVC和V4L2的简单知识. 这里是USB设备的文档描写叙述:http://www.usb.org/developers/do ...

  3. iOS开发多线程篇—多线程简单介绍

    iOS开发多线程篇—多线程简单介绍 一.进程和线程 1.什么是进程 进程是指在系统中正在运行的一个应用程序 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内 比如同时打开QQ.Xcod ...

  4. Android开发自学笔记&lpar;Android Studio&rpar;&mdash&semi;4&period;界面编程与View组件简单介绍

    一.引言 Android应用开发最重要的一份内容就是界面的开发,无论你程序包含的内容多么优秀,如若没有一个良好的用户交互界面,最终也只是会被用户所遗弃.Android SDK提供了大量功能丰富的UI组 ...

  5. iOS开发网络篇—简单介绍ASI框架的使用

    iOS开发网络篇—简单介绍ASI框架的使用 说明:本文主要介绍网络编程中常用框架ASI的简单使用. 一.ASI简单介绍 ASI:全称是ASIHTTPRequest,外号“HTTP终结者”,功能十分强大 ...

  6. iOS开发数据库篇—SQLite简单介绍

    iOS开发数据库篇—SQLite简单介绍 一.离线缓存 在项目开发中,通常都需要对数据进行离线缓存的处理,如新闻数据的离线缓存等. 说明:离线缓存一般都是把数据保存到项目的沙盒中.有以下几种方式 (1 ...

  7. iOS开发UI篇—Quartz2D简单介绍

    iOS开发UI篇—Quartz2D简单介绍 一.什么是Quartz2D Quartz 2D是⼀个二维绘图引擎,同时支持iOS和Mac系统 Quartz 2D能完成的工作: 绘制图形 : 线条\三角形\ ...

  8. iOS开发拓展篇-XMPP简单介绍

    iOS开发拓展篇-XMPP简单介绍 一.即时通讯简单介绍 1.简单说明 即时通讯技术(IM)支持用户在线实时交谈.如果要发送一条信息,用户需要打开一个小窗口,以便让用户及其朋友在其中输入信息并让交谈双 ...

  9. VPN理论简单介绍&lpar;转载&rpar;

    标签:VPN理论简单介绍 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://lvnian.blog.51cto.com/715528 ...

随机推荐

  1. CSS2样式中选择器的介绍

    这里主要是对css2中的选择器进行了一下总结!

  2. Velocity语法--转载

    Velocity是一个基于java的模板引擎(template engine),它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象.作为一个比较完善 ...

  3. IntelliJ IDEA 调试小记

    一.IntelliJ IDEA 调试没有F6 Eclipse调试有F6,意为下一步,递增F8.可IntelliJ IDEA 调试没有这个. 二.图解 Step Over (F8): 下一步 (相当于E ...

  4. Bash For Loop Examples

    How do I use bash for loop to repeat certain task under Linux / UNIX operating system? How do I set ...

  5. 流量计算-Jstorm提交Topology过程&lpar;下一个&rpar;

    马上部分流量计算-Jstorm提交Topology过程(上), 5.上篇任务已经ServiceHandler.submitTopologyWithOpts()方法.在该方法中,会实例化一个Topolo ...

  6. windowNoTitle 无效

    在开发Dialog 时候如采用 Dialog Activity 方式可能会出现取消标题栏失效 以下针对两种情况说明 1.如果 extends AppCompatActivity 需要在setConte ...

  7. 每天一个linux命令&lpar;16&rpar;&colon;which

    1.命令简介 which (which) 命令的作用是在PATH变量指定的路径中搜索某个系统命令的位置并且返回第一个搜索结果.也就是说使用which命令就可以看到某个系统命令是否存在以及执行的到底是哪 ...

  8. 配置内网DNS实现内部域名解析

    服务器 实战目的: ü 配置内网的DNS服务器实现内网服务器的域名解析. ü 配置内网的DNS服务器减少到Internet的域名解析流量. ü 配置内网的DNS服务器实现Internet上服务器的域名 ...

  9. MySQL自成一派的查询提示

    [查询提示] MySQL中可以给select语句各种提示,比如告诉它“查询的结果集特别大,请直接用磁盘临时表”,“请让这条select优先执行” .... [查询提示:与结果集相关] 与结果集相关的查 ...

  10. css3整理--gradient

    gradient语法: -moz-linear-gradient( [<point> || <angle>,]? <stop>, <stop> [, & ...