PHP安全防範程式模型
複製程式碼程式碼如下:
/* PHP防注入跨站V1.0
在您的頁上方新增: require(“menzhi_injection.php”);以及XSS跨站漏洞。
##################缺陷以及改進##################
程式還有很多缺陷,希望大家能幫助改進
###################參考以及鳴謝#################
Neeao'ASP SQL通用防注入程式V3.0
部分程式碼參考自Discuz!
*/
error_reporting(0);
define('MAGIC_QUOTES_$PC); jection="'|;|and|(|)|exec|insert |select|delete|update|count|*|%|chr|mid|master|truncate|or|char|declare";
$menzhi_injection = explode("|",$menzhi_injection); , '_POST', '_COOKIE','_REQUEST') as $_request) {
foreach($$_request as $_key => $_value) {
// value = strlower($_value
// value = strlower($_value } != '_' && $$_key = daddslashes($_value);
foreach($menzhi_injection as $kill_key => $kill_value) {
;
unset($_value);
exit();
}
}
//echom " }
function daddslashes($string) {
if(!MAGIC_QUOTES_GPC) {
if( is_array($string)) {
foreach($string as $key => $val) {
$string[$key] = daddslashes($val); 〠 }〠〠〠〠〠〠〣〜〠〠〣〠〣〠〠〣〜〠〠〠〣 〜〠〠〣〠〣〣 〜〠〠〠〠〠〣 〠〣 〜〠〠〠〠〣〣〣 〜〠〣)$. string) ;
}
}
$string = preg_replace('/&((#(d{3,5}|x[a-fA-F0-9]{4}));)/', '&\1' ,str_replace(array('&', '"', ''), array('&', '"', ''), $string));
return $string ;
}
?>
使用說明
在您的頁面頂部添加:「require(“menzhi_injection.php”);” ,即可實現通用跨站,"require(“menzhi_injection.php”);” ,即可實現通用跨站,注入通用跨站。呼叫本程序,我們使用require() 而不使用include() ,因為require()呼叫檔案如果出錯,將終止程序運行,include()並不理會。且require()呼叫檔案時,程式一運行,會先呼叫外本檔案。而inculde()則是運行到該行時才開始執行。基於函數特性,我們選擇require()。 您還可以根據實際需要自行增加或刪除$menzhi_injection變數中的過濾字符,來達到更好的防禦效果。 再者您可以自行修改程式碼,或許會有意外收穫。普通注射都可以防禦,以下測試僅供調侃,以下是對一句話木馬的測試效果:
嘿嘿,動心了就在您的頁面頂部調用吧。記住是“require(“menzhi_injection.php”);”哦。這只是提起大家興趣的噱頭,請自行測試吧。
缺陷以及待改進
由於此程序只是外部調用,只是處理了外部提交的變量,並沒有對您的應用程序作系統分析,所以存在很多局限性,請謹慎使用。 對於使用GBK編碼的程序,還存在雙位元組編碼漏洞風險,本程序雖然可以處理該漏洞。但遏止這些漏洞,還是需要從根源做起。需要處理資料庫連接文件,我們可以新增 character_set_client=binary 。 Discuz!7.0的資料庫連接類別db_mysql.class.php寫的就非常不錯,大家可以參考借鏡。當然這些並不是這個小程式所能涉及的範疇。
且此程式並沒有過濾 $_SERVER $_ENV $_FILES系統變數。例如對於$_SERVER['HTTP_X_FORWARDED_FOR']系統取得IP時,駭客可以透過劫持修改HTTP原始請求包來變更其值,而本程式是可以處理這些漏洞。但是身為程式設計師我們需要的是從根源就對外部變數處理,防患於未然,未雨綢繆吧。
程序很潦草,歡迎大家測試使用,有什麼意見建議可以留言討論。
結束語
最後祝大家學習有成,工作順利,想要獲取更多的相關文章請關注PHP中文網(www.php.cn)!