• 注册
  • 前端后端 前端后端 关注:0 内容:26

    token验证,防止跨站攻击

  • 查看作者
  • 打赏作者
    • 前端后端
    • Lv.14
      帅气冲天

      token功能简述

      使用token验证可有效的防止跨站攻击,防止非法来源数据提交访问,增加数据操作的安全性

      解决方案

      1、方式一

      <h1>这里是前台提交form表单代码(方式1)(推荐)</h1>
      <form method='post' action='do.php' target="_blank">
      <?php $module=mt_rand(100000,999999);?>
      <input type="hidden" name="module" value="<?php echo $module;?>"/>
      <input type="hidden" name="timestamp" value="<?php echo time();?>"/>
      <input type="hidden" name="token" value="<?php echo md5($module.'#$@%!^*'.time());// 中间秘钥自己修改(保持与后端一致)?>"/>
      <!-- 放正常传递的name与值 -->
      <button type="submit" >确认</button>
      </form>
      // 这里是后台处理form表单PHP代码(方式1)(推荐)
      $module = $_POST['module'];
      $timestamp = $_POST['timestamp'];
      $token = md5($module.'#$@%!^*'.$timestamp);	// 中间秘钥自己修改(保持与前端一致)
      if($token != $_POST['token']){
      	echo'<strong>错误</strong>:非法数据来源';
      	exit();
      }

      1、方式二

      <h1>这里是前台提交form表单代码(方式2)</h1>
      <form method='post' action='do.php' target="_blank">
      <?php
      	// 生成token,防止跨站攻击
      	$token = md5(uniqid(rand(), true));
      	$token = $_SESSION['mbt_register_token'];?>
      <input type="hidden" name="spam_check" value="<?php echo $token; ?>" />
      <input type="text" name="sec_name" value="这是正常要传递的值" style="width:20%;"/>
      <button type="submit" >确认</button>
      </form>
      // 这里是后台处理form表单PHP代码(方式2)
      if (!isset($_SESSION)) {		// 判断一个变量是否已设置, 即变量已被声明,且其值不为 null(会话控制)
       	session_start();		// 启动新会话或者重用现有会话
      	session_regenerate_id(TRUE);	// 使用新生成的会话 ID 更新现有会话 ID
      }
      if(empty($_POST['spam_check']) || $_POST['spam_check'] != $_SESSION['mbt_register_token']){
      	echo "<strong>错误</strong>:非法数据来源");
      	exit();
      }

      使用说明

      请根据自己实际情况做相应修改

      请登录之后再进行评论

      登录

      我关注的论坛

      暂没有数据

    • 发布内容
    • 做任务
    • 实时动态
    • 偏好设置
    • 帖子间隔 侧栏位置: