博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
web安全---Token
阅读量:5922 次
发布时间:2019-06-19

本文共 984 字,大约阅读时间需要 3 分钟。

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),那么又一次gameover。黑客将直接实现csrf攻击。

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

 

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

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

本文转自 goldfishe 51CTO博客,原文链接:http://blog.51cto.com/jack88/1908598

转载地址:http://issvx.baihongyu.com/

你可能感兴趣的文章
Linux_NIS+NFS+Autofs
查看>>
VirtualBox下配置串口以及stty命令详解(原创)
查看>>
通过分析蜘蛛侠论坛中的版块管理功能来介绍该如何使用我开发出来的ROM框架...
查看>>
无线路由器用多少信道好?
查看>>
poi读取excel,获取全部数据.
查看>>
Java如何获取文件编码格式
查看>>
Java之JMX 详解
查看>>
iOS开发之JSON & XML
查看>>
Ubuntu安装配置mysql
查看>>
YARN加载本地库Unable to load native-hadoop library解决办法
查看>>
【Go语言】【4】GO语言类型和为类型增加方法
查看>>
Linux挂载ntfs分区
查看>>
软件需求调研“五步法” 收藏
查看>>
Html 语法学习笔记三
查看>>
IIS 服务或万维网发布服务,或者依赖这 服务可能在启动期间发生错误或者已禁用...
查看>>
【斗医】【2】Web应用开发20天
查看>>
图像处理------Mean Shift滤波(边缘保留的低通滤波)
查看>>
大牛解密阿里云直播技术平台
查看>>
laravel吐槽系列之一
查看>>
FTP的主动和被动模式详解
查看>>