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(); }
使用说明
请根据自己实际情况做相应修改