博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php表单加入Token防止重复提交
阅读量:6237 次
发布时间:2019-06-22

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

Token浅谈

Token,就是令牌,最大的特点就是随机性,不可预测。一般黑客或软件无法猜测出来。
那么,Token有什么作用?又是什么原理呢?

Token一般用在两个地方——防止表单重复提交、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攻击。

"; echo "token:".$_SESSION['token']; }}?>

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

你可能感兴趣的文章
JUnit + Mockito 单元测试(二)
查看>>
面试题目集锦--二叉树
查看>>
类图(Class diagram)—UML图(二)
查看>>
系统清理小工具
查看>>
c语言中static 用法总结
查看>>
输入控件控制输入限制
查看>>
SQL语句新建用户、对用户授权、删除用户实例
查看>>
经典面试题(三):ASP.NET部分----ASP.NET 页面之间传递值的几种方式
查看>>
Android开发指南(43) —— Location and Maps
查看>>
PHP企业级开发环境配置全攻略-IDE+SVN++(转)
查看>>
快速构建实时抓取集群 « 搜索技术博客-淘宝
查看>>
[实用开源]端口转发小工具rtcp.py
查看>>
CSS实现截取隐藏文字
查看>>
C# 程序开机启动
查看>>
程序9
查看>>
Jquery获取当前元素的索引值
查看>>
GIT SSH连接遇到到的问题
查看>>
My Solution to Longest Substring Without Repeating Characters
查看>>
<转> 编写超级可读代码的15个最佳实践
查看>>
VMware vSphere Client的显示语言
查看>>