2
我在创建一个匿名调查。但是,我想阻止用户投票两次。我在想一些散列值request.META
像这样的:Django:根据请求为用户创建唯一标识符.META值
from hashlib import md5
request_id_keys = (
'HTTP_ACCEPT_CHARSET',
'HTTP_ACCEPT',
'HTTP_ACCEPT_ENCODING',
'HTTP_ACCEPT_LANGUAGE',
'HTTP_CONNECTION',
'HTTP_USER_AGENT',
'REMOTE_ADDR',
)
request_id = md5('|'.join([request.META.get(k, '') for k in requst_id_keys])).hexdigest()
我的问题:
- 好主意?馊主意?为什么?
- 这些键中的一些是多余的还是只是矫枉过正?为什么?
- 其中一些很容易改变?例如,我正在考虑删除
HTTP_USER_AGENT
,因为我知道这只是一个简单的配置更改。 - 知道一个更好的方式来完成这个半独特的标识符,足够灵活地处理共享IP(NAT)的人,但是一个简单的配置更改不会创建一个新的散列?
真棒的想法。为永远的+1。 – 2011-02-23 18:38:57
我所做的只是进入Chrome隐身模式,并以新用户的身份出现。我希望比这更强大。更不用说,我觉得有些利用一些漏洞跟踪用户。 – 2011-03-01 21:23:54
如果这是一个匿名调查,您必须接受将会有用户无法跟踪,否则您最终会成为'skeevy'。 – KindOfGuy 2013-12-23 23:07:46