php中過濾非法字符的具體實(shí)現(xiàn)
更新時(shí)間:2013年10月29日 16:10:10 作者:
非法字符過濾在某些情況下還是很有必要的,接下來為大家介紹下php中時(shí)如何實(shí)現(xiàn)的,感興趣的朋友不要錯(cuò)過
復(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)文章
PHP實(shí)現(xiàn)Huffman編碼/解碼的示例代碼
本篇文章主要介紹了PHP實(shí)現(xiàn)Huffman編碼/解碼的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-04-04
Laravel中七個(gè)非常有用但很少人知道的Carbon方法
在編寫PHP應(yīng)用時(shí)經(jīng)常需要處理日期和時(shí)間,Carbon繼承自 PHP DateTime 類的 API 擴(kuò)展,它使得處理日期和時(shí)間更加簡(jiǎn)單,這篇文章主要給大家分享了Laravel中七個(gè)非常有用但很少人知道的Carbon方法,需要的朋友可以參考下。2017-09-09
Codeigniter中mkdir創(chuàng)建目錄遇到權(quán)限問題和解決方法
這篇文章主要介紹了Codeigniter中mkdir創(chuàng)建目錄遇到權(quán)限問題和解決方法,需要的朋友可以參考下2014-07-07
Laravel5框架自定義錯(cuò)誤頁(yè)面配置操作示例
這篇文章主要介紹了Laravel5框架自定義錯(cuò)誤頁(yè)面配置操作,結(jié)合具體實(shí)例形式分析了Laravel5自定義錯(cuò)誤頁(yè)面的原理、操作步驟及相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-04-04
PHP date()函數(shù)警告: It is not safe to rely on the system解決方法
這篇文章主要介紹了PHP date()函數(shù)警告: It is not safe to rely on the system解決方法,其實(shí)就是時(shí)區(qū)設(shè)置不正確造成的,本文提供了兩種方法來解決這個(gè)問題,需要的朋友可以參考下2014-08-08
php實(shí)現(xiàn)12306余票查詢、價(jià)格查詢示例
這篇文章主要介紹了php實(shí)現(xiàn)12306余票查詢、價(jià)格查詢示例的相關(guān)資料2014-04-04
php中實(shí)現(xiàn)用數(shù)組嫵媚地生成要執(zhí)行的sql語(yǔ)句
這篇文章主要介紹了php中實(shí)現(xiàn)用數(shù)組嫵媚地生成要執(zhí)行的sql語(yǔ)句,本文直接給出代碼示例,需要的朋友可以參考下2015-07-07

