手机
当前位置:查字典教程网 >编程开发 >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中检查email完整性

php注入实例

php使用array_search函数实现数组查找的方法

PHP二进制与字符串之间的相互转换

PHP中的traits简单使用实例

MVC模式的PHP实现

PHP滚动日志的代码实现

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

php判断文本文档字符编码

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

精品推荐
分类导航