百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>网页制作> php表单参加Token防止反复提交的办法
分享文章到:

php表单参加Token防止反复提交的办法

发布时间:09/01 来源:未知 浏览: 关键词:
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攻击。

<?php
/*
* PHP简便利用token防止表单反复提交
* 此处置办法纯洁是为了给初学者参照 
*/
session_start();
function set_token() {
  $_SESSION['token'] = md5(microtime(true));
}
function valid_token() {
  $return = $_REQUEST['token'] === $_SESSION['token'] ? true : false;
  set_token();
  return $return;
}
//假如token为空则生成一个token
if(!isset($_SESSION['token']) || $_SESSION['token']=='') {
  set_token();
}
if(isset($_POST['test'])){
  if(!valid_token()){
    echo "token error";
  }else{
    echo '成功提交,Value:'.$_POST['test'];
    echo "<br/>";
    echo "token:".$_SESSION['token'];
  }
}
?>
<form method="post" action="">
  <input type="hidden" name="token" value="<?php echo $_SESSION['token']?>">
  <input type="text" name="test" value="Default">
  <input type="submit" value="提交" />
</form>

引荐学习:PHP视频教程

以上就是php表单参加Token防止反复提交的办法的具体内容,更多请关注百分百源码网其它相关文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有150人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板