【发布时间】:2013-07-23 14:49:42
【问题描述】:
为了增加安全性,我们的服务器会跟踪浏览器指纹。目前我们使用以下标题:
- 'HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR'(取第一个非空的作为client-IP)
- HTTP_ACCEPTxxxx
- HTTP_USER_AGENT
还有更多(可选的)标题可以使用吗?
一般来说,计算客户端指纹的最佳“算法”是什么?
【问题讨论】:
-
仅供参考,所有这些信息都可以被欺骗,但是可以使用USER_AGENT和IP地址...
-
你让任何人都可以在这里欺骗别人的指纹,恭喜。只有
REMOTE_ADDR保证是正确的,其他的都是任意用户提供的信息。您永远不应该使用任何替代 *_IP 标头,除非您确切知道您控制下的代理已设置它们。简而言之,这几乎是任何类型的 HTTP 标头指纹识别的问题。 -
@deceze:对于IP,并不是所有用户都有公共IP,很多用户可能使用一个公共IP(在我的国家至少有10,000个用户在一个IP后面)
-
Deceze:注意“安全”之前的“添加”一词。
-
@Patrick 当然,我没想到这是您唯一的安全措施。由于上述问题,它仍然存在问题,以至于添加它几乎没有意义。此外,IP 可以随时出于完全正当的理由而更改,因此要求它们保持不变可能会让用户非常恼火。
标签: php security http cross-browser