from: http://www.75team.com/archives/729什么是double cookie验证double cookie验证是利用cookie来验证请求合法性的一种方法。一个double cookie验证的url形如http://a.com?c=cookie向服务器请求的url带上cookie,服务器收到请求后,解析出url中的cookie和http请求带过来的cookie进行对比。如果一样就说明请求合法,不一样就可以判定请求非法。因为是用url中的cookie和http请求中的cookie进行验证,所以叫double cookie验证。验证原理url是客户端javascript生成的,javascript可以读取cookie。url可以从任意客户端访问,但是只有一个客户端的http请求带给服务器的cookie和url中的cookie是一致的。注意事项用来验证的cookie在每个客户端必须唯一用来验证的cookie不能是敏感信息。比如登录用户的token不能作为验证的cookie应用场景double cookie验证不能判断用户修改本地cookie然后再进行的访问。但是没有关系。举个应用场景。比如一个网站的 评分功能的请求是这样的http://a.com?score=100&id=10000如果有人把这个url发到网上,引诱其它用户来点击,那么就会生成大量的评分请求。这时就可以用double cookie验证了。因为很难让点击这个链接的人先修改本地cookie然后再点击链接使用建议有的同学喜欢把cookie做个变换,防止别人一眼看出来是用哪个cookie做的验证。没必要这样做,也不应该这样做。变换的方法一定会暴露在客户端验证的目的不是为了防止有意伪造对cooie做变换的方法如果不得当,可能会对cookie的结构造成依赖。如果哪天cookie的结构改变了,就会使验证代码失效,甚至报错。