token

Posted 大妖小白

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了token相关的知识,希望对你有一定的参考价值。

Token,就是令牌,最大的特点就是随机性。

  Token一般用在两个地方:

  • 1)防止表单重复提交、
  • 2)anti csrf攻击(跨站点请求伪造)。

  两者在原理上都是通过session token来实现的。

  当客户端请求页面时,服务器会生成一个随机数Token,并且将Token放置到session当中,然后将Token发给客户端(一般通过构造hidden表单)。下次客户端提交请求时,Token会随着表单一起提交到服务器端。
  应用于“anti csrf攻击”,则服务器端会对Token值进行验证,判断是否和session中的Token值相等,若相等,则可以证明请求有效,不是伪造的。
  应用于“防止表单重复提交”,服务器端第一次验证相同过后,会将session中的Token值更新下,若用户重复提交,第二次的验证判断将失败,因为用户提交的表单中的Token没变,但服务器端session中Token已经改变了。

  虽然session应用相对安全,但是较为繁琐,同时当多页面多请求时,必须采用多Token同时生成的方法,这样占用更多资源,执行效率会降低。因此,也可用cookie存储验证信息的方法来代替session Token。比如,应对“重复提交”时,当第一次提交后便把已经提交的信息写到cookie中,当第二次提交时,由于cookie已经有提交记录,因此第二次提交会失败。不过,cookie存储有个致命弱点,如果cookie被劫持(xss攻击很容易得到用户cookie),黑客将直接实现csrf攻击,GG。

    安全和高效相对的。具体问题具体对待吧。

  要避免“加token但不进行校验”的情况,在session中增加了token,但服务端没有对token进行验证,根本起不到防范的作用。

  对数据库有改动的增删改操作,需要加token验证,对于查询操作,一定不要加token,防止攻击者通过查询操作获取token进行csrf攻击。但并不是这样攻击者就无法获得token,只是增大攻击成本而已。

以上是关于token的主要内容,如果未能解决你的问题,请参考以下文章

HTTParty 和通过令牌授权

Roblox 从目录中购买商品

JMeter接口测试示例——添加Cookie

会话管理1-Token

如何基于此 curl 设置授权令牌?

使用 fetch 创建获取请求 - 仅发送选项