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

独自等待 2017年5月12日01:42:46评论416 views字数 164阅读0分32秒阅读模式

最近研究一下防止php重复提交表单的方法,找到一些文章分享给大家。

原理在于生成一个随机字符串放在session里,提交表单后来验证这个字符串,可以做到防止他人自己写form来欺骗提交,重复提交或者双击提交。

首先大家需要了解的是什么token,这个可以参考前一篇文章,如下:

WEB安全之Token浅谈

表单重复提交

简单的用php实现的代码如下:


上面的比较简单一点的方法,下面的代码更加安全一点。

Token.php

',
  'e',
  '2',
  'f',
  'P',
  'g',
  ')',
  '?',
  'H',
  'i',
  'X',
  'U',
  'J',
  'k',
  'r',
  'l',
  '3',
  't',
  'M',
  'n',
  '=',
  'o',
  '+',
  'p',
  'F',
  'q',
  '!',
  'K',
  'R',
  's',
  'c',
  'm',
  'T',
  'v',
  'j',
  'u',
  'V',
  'w',
  ',',
  'x',
  'I',
  '$',
  'Y',
  'z',
  '*'
 );
 # Array indice friendly number of chars;
 $numChars = count($chars) - 1;
 $token = '';
 # Create random token at the specified length
 for ($i = 0; $i < $len; $i++)
  $token .= $chars[mt_rand(0, $numChars)];
 # Should token be run through md5?
 if ($md5) {
  # Number of 32 char chunks
  $chunks = ceil(strlen($token) / 32);
  $md5token = '';
  # Run each chunk through md5
  for ($i = 1; $i <= $chunks; $i++)
   $md5token .= md5(substr($token, $i * 32 - 32, 32));
  # Trim the token
  $token = substr($md5token, 0, $len);
 }
 return $token;
}
?>

form.php


action.php


参考文章:

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

PHP表单增加token验证,防止站外提交/重复提交/双击提交

JavaWeb之——使用Session防止表单重复提交

Java web解决表单重复提交问题

总结 XSS 与 CSRF 两种跨站攻击

10 Things You Should Know about Tokens

Cookies vs Tokens. Getting auth right with Angular.JS



from www.waitalone.cn.thanks for it.

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
独自等待
  • 本文由 发表于 2017年5月12日01:42:46
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   php表单加入Token防止重复提交https://cn-sec.com/archives/50269.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息