php注入的安全防范通過(guò)上面的過(guò)程,我們可以了解到php注入的原理和手法,當(dāng)然我們也同樣可以制定出相應(yīng)該的防范方法:
首先是對(duì)服務(wù)器的安全設(shè)置,前面的windows服務(wù)器的安全設(shè)置我們已經(jīng)講了,不再重復(fù),這里主要是php+mysql的安全設(shè)置和linux主機(jī)的安全設(shè)置。對(duì)php+mysql注射的防范,首先將magic_quotes_gpc設(shè)置為on,display_errors設(shè)置為off,如果id型,我們利用intval()函數(shù)將其轉(zhuǎn)換成整數(shù)類(lèi)型,如代碼:
$id=intval($id);
mysql_query=”select *from example where articieid=’$id’”;或者這樣寫(xiě):mysql_query("select * from article where articleid=".intval($id)."")
如果是字符型就用addslashes()過(guò)濾一下,然后再過(guò)濾”%”和”_”如:
$search=addslashes($search);
$search=str_replace(“_”,”/_”,$search);
$search=str_replace(“%”,”/%”,$search);
當(dāng)然也可以加php通用防注入代碼:
/*************************
php通用防注入安全代碼
說(shuō)明:
判斷傳遞的變量中是否含有非法字符
如$_post、$_get
功能:
防注入
**************************/
//要過(guò)濾的非法字符
$arrfiltrate=array("'",";","union");
//出錯(cuò)后要跳轉(zhuǎn)的url,不填則默認(rèn)前一頁(yè)
$strgourl="";
//是否存在數(shù)組中的值
function funstringexist($strfiltrate,$arrfiltrate){
foreach ($arrfiltrate as $key=>$value){
if (eregi($value,$strfiltrate)){
return true;
}
}
return false;
}
//合并$_post 和 $_get
if(function_exists(array_merge)){
$arrpostandget=array_merge($http_post_vars,$http_get_vars);
}else{
foreach($http_post_vars as $key=>$value){
$arrpostandget[]=$value;
}
foreach($http_get_vars as $key=>$value){
$arrpostandget[]=$value;
}
}
//驗(yàn)證開(kāi)始
foreach($arrpostandget as $key=>$value){
if (funstringexist($value,$arrfiltrate)){
echo "alert(/"neeao提示,非法字符/");";
if (empty($strgourl)){
echo "history.go(-1);";
}else{
echo "window.location=/"".$strgourl."/";";
}
exit;
}
}
?>
/*************************
保存為checkpostandget.php
然后在每個(gè)php文件前加include(“checkpostandget.php“);即可
**************************/
另外將管理員用戶(hù)名和密碼都采取md5加密,這樣就能有效地防止了php的注入。
還有服務(wù)器和mysql也要加強(qiáng)一些安全防范。
對(duì)于linux服務(wù)器的安全設(shè)置:
加密口令,使用“/usr/sbin/authconfig”工具打開(kāi)密碼的shadow功能,對(duì)password進(jìn)行加密。
禁止訪(fǎng)問(wèn)重要文件,進(jìn)入linux命令界面,在提示符下輸入:
#chmod 600 /etc/inetd.conf //改變文件屬性為600
#chattr +i /etc/inetd.conf //保證文件屬主為root
#chattr –i /etc/inetd.conf // 對(duì)該文件的改變做限制
禁止任何用戶(hù)通過(guò)su命令改變?yōu)閞oot用戶(hù)
在su配置文件即/etc/pam.d/目錄下的開(kāi)頭添加下面兩行:
auth sufficient /lib/security/pam_rootok.so debug
auth required /lib/security/pam_whell.so group=wheel
刪除所有的特殊帳戶(hù)
#userdel lp等等 刪除用戶(hù)
#groupdel lp等等 刪除組
禁止不使用的suid/sgid程序
#find / -type f /(-perm -04000 - o –perm -02000 /) /-execls –lg {} /;
新聞熱點(diǎn)
疑難解答