• PHP通用防注入安全代码


    简述:
    /*************************
    说明:
    判断传递的变量中是否含有非法字符
    如$_POST、$_GET
    功能:
    防注入
    **************************/  
    <?php
    //要过滤的非法字符
    $ArrFiltrate=array("\'\'",";","union");
    //出错后要跳转的url,不填则默认前一页
    $StrGoUrl="";
    //是否存在数组中的值
    function FunStringExist($StrFiltrate,$ArrFiltrate){
    foreach ($ArrFiltrate as $key=>$value){
    if (eregi($value,$StrFiltrate)){
    return true;
    }
    }
    return false;
    }
    //合并$_POST 和 $_GET
    if(function_exists(array_merge)){
    $ArrPostAndGet=array_merge($HTTP_POST_VARS,$HTTP_GET_VARS);
    }else{
    foreach($HTTP_POST_VARS as $key=>$value){
    $ArrPostAndGet[]=$value;
    }
    foreach($HTTP_GET_VARS as $key=>$value){
    $ArrPostAndGet[]=$value;
    }
    }
    //验证开始
    foreach($ArrPostAndGet as $key=>$value){
    if (FunStringExist($value,$ArrFiltrate)){
    echo "<script language=\\"javascript\\">alert(\\"Neeao提示,非法字符\\");</script>";
    if (empty($StrGoUrl)){
    echo "<script language=\\"javascript\\">history.go(-1);</script>";
    }else{
    echo "<script language=\\"javascript\\">window.location=\\"".$StrGoUrl."\\";</script>";
    }
    exit;
    }
    }
    ?>
    保存为checkpostandget.php  
    然后在每个php文件前加include(“checkpostandget.php“);即可

  • 相关阅读:
    Sametime SDK
    final,finally和 finalize的区别
    静态工厂方法
    LinkedTransferQueue原理
    SynchronousQueue和LinkedBlockingQueue区别
    SynchronousQueue中TransferStack原理详解
    SynchronousQueue中TransferQueue原理详解
    jdk Queue
    netty NioEventLoopGroup 分析
    Netty Server 启动时序图
  • 原文地址:https://www.cnblogs.com/top5/p/1539696.html
Copyright © 2020-2023  润新知