zoukankan      html  css  js  c++  java
  • php防止CSRF(跨站请求伪造)的原理实现示例

    <?php
    session_start();
    
    //生成随机字符串
    function randomStr($max = 16){
        $str = 'abcdefghijklmnopqrstuvwxyz'.
               '0123456789'.
               'ABCDEFJHIJKLMNOPQRSTUVWXYZ';
           
        $val = '';
        $str = str_shuffle($str);  //打乱字符串
    for($i = 0; $i < $max; $i++){ $val .= $str[rand(0, strlen($str) - 1)]; } return $val; } $retStr = randomStr(); echo '原始的值:'.$_SESSION['token'].'<br>收到的值:'.$_POST['token'].'<br>'; //此函数给URL重写机制添加名/值对。 //此函数要写在 html 页面前端中;如果是 MVC 模式,应包含在 view 视图文件内 output_add_rewrite_var('token', $retStr); //服务端判断执行 if(filter_has_var(INPUT_POST, "token") && $_POST['token'] == $_SESSION['token']){ echo '<strong style="color:red">执行代码了!内容为:'.$_POST['var2'].'</strong>'; } //在程序判断后才写进 session 否则数据不一致 $_SESSION['token'] = $retStr; ?> <div> <a href="file.php">link</a> <a href="http://example.com">link2</a> <form action="" method="post"> <input type="text" name="var2" value="这是默认值!"/> <input type="submit" value="确定"> </form> </div> <?php print_r(ob_list_handlers()); ?>

     参考php手册内容地址:https://www.php.net/manual/zh/function.output-add-rewrite-var.php

  • 相关阅读:
    【Web__Cookie】常规使用
    【MVC__ExceptionFilter】全局异常处理
    【 自定义友好错误页 】
    【前端__iframe】web页面框架的使用相关
    【JS__UEditor】富文本编辑器的使用
    简单五子棋,没有电脑AI
    C# 打印倒三角
    C# 抽象类
    递归算法输出数列的前N个数
    case when then else end 累加
  • 原文地址:https://www.cnblogs.com/qingsong/p/13750960.html
Copyright © 2011-2022 走看看