资讯专栏INFORMATION COLUMN

php表单加入Token防止重复提交

william / 533人阅读

摘要:下次客户端提交请求时,会随着表单一起提交到服务器端。简单利用防止表单重复提交此处理方法纯粹是为了给初学者参考如果为空则生成一个成功提交,提交

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"];
  }
}
?>
">

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/28636.html

相关文章

  • PHP防止用户重复提交表单

    摘要:我们提交表单的时候,不能忽视的一个限制是防止用户重复提交表单,因为有可能用户连续点击了提交按钮或者是攻击者恶意提交数据,那么我们在提交数据后的处理如修改或添加数据到数据库时就会惹上麻烦。我们现在来了解下简单的利用来防止表单重复提交的方法。 我们提交表单的时候,不能忽视的一个限制是防止用户重复提交表单,因为有可能用户连续点击了提交按钮或者是攻击者恶意提交数据,那么我们在提交数据后的处理如...

    zengdongbao 评论0 收藏0
  • 表单防重提交详解

    摘要:注意设计模式并不适用所有的重复提交情况,比如由于服务器响应缓慢,用户刷新提交请求造成的重复提交。用户恶意避开客户端预防多次提交手段,进行重复数据提交。 表单重复提交的常见应用场景 1、在网络延迟的情况下让用户又是加你点击多次submit按钮导致 2、表单提交后用户点击刷新按钮导致表单重复提交 3、用户表单提交后,点击浏览器后退按钮退回表单页面后进行再次提交 很多情况下,重复提交的数据,...

    Kross 评论0 收藏0
  • 表单防重提交详解

    摘要:注意设计模式并不适用所有的重复提交情况,比如由于服务器响应缓慢,用户刷新提交请求造成的重复提交。用户恶意避开客户端预防多次提交手段,进行重复数据提交。 表单重复提交的常见应用场景 1、在网络延迟的情况下让用户又是加你点击多次submit按钮导致 2、表单提交后用户点击刷新按钮导致表单重复提交 3、用户表单提交后,点击浏览器后退按钮退回表单页面后进行再次提交 很多情况下,重复提交的数据,...

    Backache 评论0 收藏0
  • Servlet第六篇【Session介绍、API、生命周期、应用、与Cookie区别】

    摘要:于是乎服务器向用户浏览器发送了一个名为的,它的值是的值。标记着该用户已经登陆了跳转到其他页面,告诉用户成功登陆了。注册多个用户,不断发帖子,扰乱正常发帖秩序。在处理表单的中刷新。监听用户提交事件。 什么是Session Session 是另一种记录浏览器状态的机制。不同的是Cookie保存在浏览器中,Session保存在服务器中。用户使用浏览器访问服务器的时候,服务器把用户的信息以某种...

    Java_oldboy 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<