復(fù)制代碼 代碼如下:
class sqlsafe {
private $getfilter = "'|(and|or)\b.+?(>|private $postfilter = "\b(and|or)\b.{1,6}?(=|>|private $cookiefilter = "\b(and|or)\b.{1,6}?(=|>|/**
* 構(gòu)造函數(shù)
*/
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);}
}
/**
* 參數(shù)檢查并寫日志
*/
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('您提交的參數(shù)非法,系統(tǒng)已記錄您的本次操作!','',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."
");
fclose($ts);
}
}
?>
http://www.bkjia.com/PHPjc/824964.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/824964.htmlTechArticle復(fù)制代碼 代碼如下: ?php class sqlsafe { private $getfilter = "'|(and|or)\b.+?(||=|in|like)|\/\*.+?\*\/|\s*script\b|\bEXEC\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\s+I...