【发布时间】:2014-05-18 18:00:04
【问题描述】:
我正在考虑创建一个匿名投票。但是,我想防止用户投票两次。我正在考虑像这样散列一些 request.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) 的人员,但简单的配置更改不会创建新的哈希?
【问题讨论】:
标签: django http browser django-forms http-headers