当用户登录我的网站时,我会在他的浏览器中添加一个加密的 cookie。当他回来时,我会检查各个方面,包括用户代理。
但似乎非常小的变化使这个检查过时了。下面的例子。用户登录时的第一个,用户稍后回来时的第二个:
Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.62 Safari/537.36
Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36
Opera/9.80 (Series 60; Opera Mini/7.1.32448/30.3793; U; tr) Presto/2.8.119 Version/11.10
Opera/9.80 (Series 60; Opera Mini/7.1.32448/31.1325; U; tr) Presto/2.8.119 Version/11.10
Opera/9.80 (Android; Opera Mini/7.5.33361/31.1312; U; tr) Presto/2.8.119 Version/11.10
Opera/9.80 (Android; Opera Mini/7.5.33361/31.1325; U; tr) Presto/2.8.119 Version/11.10
Mozilla/5.0 (iPad; CPU OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10B329
Mozilla/5.0 (iPad; CPU OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10B329 Twitter for iPhone
出于安全原因,我想继续检查用户代理。但我也不想拒绝用户进行这样的更改。
PHP服务器端的正确方法是什么?
(编辑:请注意,我用盐和一些随机变量加密 cookie 内容。所以很难猜测 cookie 的内容。但是任何窃取 cookie 的人都可以将自己表现为另一种用途。但窃取 cookie 是另一个问题。但是带有会话 id 的 cookie 也可能被盗,这是另一个问题)