double cookie验证

共计 813 个字符,预计需要花费 3 分钟才能阅读完成。

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 做的验证。没必要这样做,也不应该这样做。

  1. 变换的方法一定会暴露在客户端
  2. 验证的目的不是为了防止有意伪造
  3. 对 cooie 做变换的方法如果不得当,可能会对 cookie 的结构造成依赖。如果哪天 cookie 的结构改变了,就会使验证代码失效,甚至报错。
正文完
 
zhaopeng
版权声明:本站原创文章,由 zhaopeng 2014-12-28发表,共计813字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)