• 注册
  • 前端后端 前端后端 关注:1 内容:70

    token验证,防止跨站攻击

  • 查看作者
  • 打赏作者
  • 帅气冲天

    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();
    }

    使用说明

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

    请登录之后再进行评论

    登录

    我关注的论坛

    暂没有数据

  • 发布内容
  • 做任务
  • 偏好设置
  • 直达底部
  • 帖子间隔 侧栏位置: