zoukankan      html  css  js  c++  java
  • PHP 防止站外提交

    方法一:原理和防盗链一样,都是检查信息来源的http 头.如果不是本站域名就阻止.(当然,这不是绝对的,因为referer是可以伪造的)

    <?
    
    $servername=$HTTP_SERVER_VARS['SERVER_NAME']; //获取本站域名
    
    $sub_from=$HTTP_SERVER_VARS["HTTP_REFERER"]; //获取来源的referer
    
    $sub_len=strlen($servername); //计算本站域名的长度
    
    $checkfrom=substr($sub_from,7,$sub_len); //截取来源域名
    
    if($checkfrom!=$servername){ //假如截取的来源域名不等于本站域名,则终止.
    
        echo("数据来源有误!请从本站提交!");
    
        exit;
    
    }
    
    ?>

    处理远程表单提交更好的方式是,根据一个惟一的字符串或时间戳生成一个令牌,并将这个令牌放在会话变量和表单中。提交表单之后,检查两个令牌是否匹配。如果不匹配,就知道有人试图从表单的远程副本发送数据。

    要创建随机的令牌,可以使用 PHP 内置的 md5()、uniqid() 和 rand() 函数,如下所示

    <?php
    session_start();    
            
    if ($_POST['submit'] == "go"){    
        //check token    
        if ($_POST['token'] == $_SESSION['token']){    
            //strip_tags    
            $name = strip_tags($_POST['name']);    
            $name = substr($name,0,40);    
            //clean out any potential hexadecimal characters    
            $name = cleanHex($name);    
            //continue processing....    
        }else{    
            //stop all processing! remote form posting attempt!    
        }    
    }    
            
    $token = md5(uniqid(rand(), true));    
    $_SESSION['token']= $token;    
            
            
    function cleanHex($input){    
        $clean = preg_replace("![][xX]([A-Fa-f0-9]{1,3})!", "",$input);    
        return $clean;    
    }    
    ?>    
            
            
    <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">    
    <p><label for="name">Name</label>    
    <input type="text" name="name" id="name" size="20" maxlength="40"/></p>    
    <input type="hidden" name="token" value="<?php echo $token;?>"/>    
    <p><input type="submit" name="submit" value="go"/></p>    
    </form>
  • 相关阅读:
    Centos 7安装python3(PY3.6)
    linux仅修改文件夹权限 分别批量修改文件和文件夹权限
    【工作手札】Nginx接口代理可跨域
    微信自定义分享链接信息(标题,图片和内容)实现过程
    ios 等保 删除 uiwebview
    postman 接口批量测试
    uniapp之 页面滑动 组件
    uniapp之 点击图片跳转详情 组件
    安装 node.js
    创建一个mpvue的小程序
  • 原文地址:https://www.cnblogs.com/cuoreqzt/p/3824016.html
Copyright © 2011-2022 走看看