使用Django设置紧凑型隐私策略

问题描述:

如何从Django中设置P3P紧凑型隐私策略,以便IE在接受来自我的网站的cookies时,在安全设置为高电平时 - 即除非有紧凑隐私策略,否则不接受Cookie。使用Django设置紧凑型隐私策略

干杯 盖伊

中间件是在“每个请求”的基础上执行此类操作的首选方法。例如,这里是中间件的一个简单的位到相同的(实施例)P3P头添加到每个响应Django的生成:

在settings.py:

P3P_COMPACT = 'policyref="http://www.example.com/p3p.xml", CP="NON DSP COR CURa TIA"' 
MIDDLEWARE_CLASSES += ('myapp.middleware.P3PHeaderMiddleware',) 

在MYAPP/middleware.py:

from django.conf import settings 

class P3PHeaderMiddleware(object): 
    def process_response(self, request, response): 
     response['P3P'] = getattr(settings, 'P3P_COMPACT', None) 
     return response 

您还可以通过在响应设定P3P头得到一个单一的视图类似的效果:

def my_view(request): 
    response = render_to_response('my_template.html') 
    response['P3P'] = 'CP="NON DSP COR CURa TIA"' 
    return response 

要稍微扩展该主题,作为响应的一部分,cookie和头部(例如P3P头部)都会同时发送;实际上,在引擎盖下,cookie被设置为另一个响应头。您可以使用curl看到cookie标头:

$ curl --head http://www.google.com/ 
HTTP/1.1 200 OK 
Date: Wed, 13 Jan 2010 00:04:59 GMT 
Expires: -1 
Cache-Control: private, max-age=0 
Content-Type: text/html; charset=ISO-8859-1 
Set-Cookie: PREF=ID=d2c09762c479f94e:TM=1263341099:LM=1263341099:S=oJby3NpU4RsRfuYa; expires=Fri, 13-Jan-2012 00:04:59 GMT; path=/; domain=.google.com 
Set-Cookie: NID=30=kdKrd5e-u6Xs7cUe3p4eaNDtv6SO88uBL5v6_M1XMTSRmkh7okxrWLOm-l_uZdN37PxQIe4dBlekFFVCpTFXGyIDlUrz1hEwhgVLvXfIik_VeVWGmWzKbA5qu_Zq0sOi; expires=Thu, 15-Jul-2010 00:04:59 GMT; path=/; domain=.google.com; HttpOnly 
Server: gws 
X-XSS-Protection: 0 
Transfer-Encoding: chunked 

我不知道多少可怕有关P3P,但我做了一个小挖,发现这个:

http://www.w3.org/TR/P3P11/#Well_Known_Location

你把文件在/w3c/p3p.xml

看起来好像p3p策略与robots.txt文件类似。

此外,如果robots.txt方法不是您想要的方式,您可以在所有页面上设置p3p标题。但是,这是一个侧面提示,因为您希望我假定的压缩版本是p3p.xml文件。

希望这能帮助你走上正轨。

+0

感谢您的回答,我可以设置所有这一切,无后顾之忧。这更多的是我如何在由Django Auth系统设置的cookie中添加一个P3P压缩标头。Cookie是否为服务的页面分配了不同的标头? – 2009-11-29 17:56:44