493333王中王开奖结果-王中王开奖一马中特

493333王中王开奖结果让不同类型的网络可以可靠地互相联接,王中王开奖一马中特拥有规模庞大的原创游戏,在这里您将享受的不一样快乐。

网络频道

当前位置:493333王中王开奖结果 > 网络频道 > 493333王中王开奖结果PHP表单增加token验证,防止站

493333王中王开奖结果PHP表单增加token验证,防止站

来源:http://www.soniaLorenzana.com 作者:493333王中王开奖结果 时间:2019-09-30 17:04

 

<?php
session_start();
if($_POST['token'] == $_SESSION['token']){
    unset($_SESSION['token']);
    echo "这是一个正常的提交请求";
}else{
    echo "这是一个非法的提交请求";
}
?>

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

<?php
include_once("token.php");
$token = getToken();
session_start();
$_SESSION['token'] = $token;
?>
<form action="action.php" method="post"
<input type="hidden" name="token" value="<?=$token?>" />
<!-- 其他input submit之类的 -->
</form>

 

action.php

 

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

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

<?php
 
/*
 * Created on 2013-3-25
 *
 * To change the template for this generated file go to
 * Window - Preferences - PHPeclipse - PHP - Code Templates
 */
function getToken($len = 32, $md5 = true) {
 # Seed random number generator
 # Only needed for PHP versions prior to 4.2
 mt_srand((double) microtime() * 1000000);
 # Array of characters, adjust as desired
 $chars = array (
  'Q',
  '@',
  '8',
  'y',
  '%',
  '^',
  '5',
  'Z',
  '(',
  'G',
  '_',
  'O',
  '`',
  'S',
  '-',
  'N',
  '<',
  'D',
  '{',
  '}',
  '[',
  ']',
  'h',
  ';',
  'W',
  '.',
  '/',
  '|',
  ':',
  '1',
  'E',
  'L',
  '4',
  '&',
  '6',
  '7',
  '#',
  '9',
  'a',
  'A',
  'b',
  'B',
  '~',
  'C',
  'd',
  '>',
  '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;
}
?>

Token一般用在两个地方——防止表单重复提交、anti csrf攻击(跨站点请求伪造)。

form.php

form.php

Token.php

 

 

 

 

Token,就是令牌,最大的特点就是随机性,不可预测。一般黑客或软件无法猜测出来。

上面的session应用相对安全,但也叫繁琐,同时当多页面多请求时,必须采用多Token同时生成的方法,这样占用更多资源,执行效率会降低。因此,也可用cookie存储验证信息的方法来代替session Token。比如,应对“重复提交”时,当第一次提交后便把已经提交的信息写到cookie中,当第二次提交时,由于cookie已经有提交记录,因此第二次提交会失败。

 

 

493333王中王开奖结果 1

<?php
/*
 * Created on 2013-3-25
 *
 * To change the template for this generated file go to
 * Window - Preferences - PHPeclipse - PHP - Code Templates
 */
function getToken($len = 32, $md5 = true) {
  # Seed random number generator
  # Only needed for PHP versions prior to 4.2
  mt_srand((double) microtime() * 1000000);
  # Array of characters, adjust as desired
  $chars = array (
    'Q',
    '@',
    '8',
    'y',
    '%',
    '^',
    '5',
    'Z',
    '(',
    'G',
    '_',
    'O',
    '`',
    'S',
    '-',
    'N',
    '<',
    'D',
    '{',
    '}',
    '[',
    ']',
    'h',
    ';',
    'W',
    '.',
    '/',
    '|',
    ':',
    '1',
    'E',
    'L',
    '4',
    '&',
    '6',
    '7',
    '#',
    '9',
    'a',
    'A',
    'b',
    'B',
    '~',
    'C',
    'd',
    '>',
    '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;
}
?>

Token浅谈

那么,Token有什么作用?又是什么原理呢?

 

本文由493333王中王开奖结果发布于网络频道,转载请注明出处:493333王中王开奖结果PHP表单增加token验证,防止站

关键词: