php中過濾非法字符的具體實現(xiàn)
更新時間:2013年10月29日 16:10:10 作者:
非法字符過濾在某些情況下還是很有必要的,接下來為大家介紹下php中時如何實現(xiàn)的,感興趣的朋友不要錯過
復(fù)制代碼 代碼如下:
<?php
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)";
/**
* 構(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."\r\n");
fclose($ts);
}
}
?>
相關(guān)文章
Codeigniter中mkdir創(chuàng)建目錄遇到權(quán)限問題和解決方法
這篇文章主要介紹了Codeigniter中mkdir創(chuàng)建目錄遇到權(quán)限問題和解決方法,需要的朋友可以參考下2014-07-07
PHP date()函數(shù)警告: It is not safe to rely on the system解決方法
這篇文章主要介紹了PHP date()函數(shù)警告: It is not safe to rely on the system解決方法,其實就是時區(qū)設(shè)置不正確造成的,本文提供了兩種方法來解決這個問題,需要的朋友可以參考下2014-08-08
php中實現(xiàn)用數(shù)組嫵媚地生成要執(zhí)行的sql語句
這篇文章主要介紹了php中實現(xiàn)用數(shù)組嫵媚地生成要執(zhí)行的sql語句,本文直接給出代碼示例,需要的朋友可以參考下2015-07-07

