• 技术文章 >后端开发 >php教程

    php中过滤非法字符的具体实现_PHP教程

    2016-07-13 10:25:46原创265
    复制代码 代码如下:

    class sqlsafe {
    private $getfilter = "'|(and|or)\\b.+?(>|<|=|in|like)|\\/\\*.+?\\*\\/|<\\s*script\\b|\\bEXEC\\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\\s+(TABLE|DATABASE)";
    private $postfilter = "\\b(and|or)\\b.{1,6}?(=|>|<|\\bin\\b|\\blike\\b)|\\/\\*.+?\\*\\/|<\\s*script\\b|\\bEXEC\\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\\s+(TABLE|DATABASE)";
    private $cookiefilter = "\\b(and|or)\\b.{1,6}?(=|>|<|\\bin\\b|\\blike\\b)|\\/\\*.+?\\*\\/|<\\s*script\\b|\\bEXEC\\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\\s+(TABLE|DATABASE)";
    /**
    * 构造函数
    */
    public function __construct() {
    foreach($_GET as $key=>$value){$this->stopattack($key,$value,$this->getfilter);}
    foreach($_POST as $key=>$value){$this->stopattack($key,$value,$this->postfilter);}
    foreach($_COOKIE as $key=>$value){$this->stopattack($key,$value,$this->cookiefilter);}
    }
    /**
    * 参数检查并写日志
    */
    public function stopattack($StrFiltKey, $StrFiltValue, $ArrFiltReq){
    if(is_array($StrFiltValue))$StrFiltValue = implode($StrFiltValue);
    if (preg_match("//m.sbmmt.com/m/".$ArrFiltReq."/is",$StrFiltValue) == 1){
    $this->writeslog($_SERVER["REMOTE_ADDR"]." ".strftime("%Y-%m-%d %H:%M:%S")." ".$_SERVER["PHP_SELF"]." ".$_SERVER["REQUEST_METHOD"]." ".$StrFiltKey." ".$StrFiltValue);
    showmsg('您提交的参数非法,系统已记录您的本次操作!','',0,1);
    }
    }
    /**
    * SQL注入日志
    */
    public function writeslog($log){
    $log_path = CACHE_PATH.'logs'.DIRECTORY_SEPARATOR.'sql_log.txt';
    $ts = fopen($log_path,"a+");
    fputs($ts,$log."\r\n");
    fclose($ts);
    }
    }
    ?>

    www.bkjia.comtruehttp://www.bkjia.com/PHPjc/824964.htmlTechArticle复制代码 代码如下: ?php class sqlsafe { private $getfilter = "'|(and|or)\\b.+?(||=|in|like)|\\/\\*.+?\\*\\/|\\s*script\\b|\\bEXEC\\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\\s+I...

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:php 过滤非法字符
    上一篇:php while循环得到循环次数_PHP教程 下一篇:FireFox浏览器使用Javascript上传大文件_PHP教程
    Web大前端开发直播班

    相关文章推荐

    • PHP7+也支持类型声明了,聊聊这个特性!• 不从新编译PHP给php增加openssl模块记录 • nginx 配备php环境 • 安装使用PHPnow后程序无法使用有关问题 • 一个正则表达式的有关问题,数字的个数写1就可以匹配下,写比1大的就匹配不下了

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网