手机
当前位置:查字典教程网 >编程开发 >php教程 >php中过滤非法字符的具体实现
php中过滤非法字符的具体实现
摘要:复制代码代码如下:

复制代码 代码如下:

<?php

class sqlsafe {

private $getfilter = "'|(and|or)b.+?(>|<|=|in|like)|/*.+?*/|<s*scriptb|bEXECb|UNION.+?SELECT|UPDATE.+?SET|INSERTs+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)s+(TABLE|DATABASE)";

private $postfilter = "b(and|or)b.{1,6}?(=|>|<|binb|blikeb)|/*.+?*/|<s*scriptb|bEXECb|UNION.+?SELECT|UPDATE.+?SET|INSERTs+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)s+(TABLE|DATABASE)";

private $cookiefilter = "b(and|or)b.{1,6}?(=|>|<|binb|blikeb)|/*.+?*/|<s*scriptb|bEXECb|UNION.+?SELECT|UPDATE.+?SET|INSERTs+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("/".$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."rn");

fclose($ts);

}

}

?>

【php中过滤非法字符的具体实现】相关文章:

php跨服务器访问方法小结

php判断文本文档字符编码

文件上传的实现

php简单实现多字节字符串翻转的方法

php计数器的设计与实现第1/2页

PHP生成指定随机字符串的简单实现方法

PHP滚动日志的代码实现

php中的时间处理

php实现比较两个字符串日期大小的方法

php分别做为cgi和module来运行的配置

精品推荐
分类导航