網站的運作安全肯定是每個站長必須考慮的問題,大家知道,大多數駭客攻擊網站都是採用sql注入,這就是我們常說的為什麼 ?
最原始的靜態的網站反而是最安全的。今天我們來談談PHP注入的安全規範,防止自己的網站被sql注入。
如今主流的網站開發語言還是php,那我們就從php網站如何防止,那我們就從php網站如何防止 sql注入開始說起:Php注入的安全防範透過上面的過程,我們可以了解到 php注入的原理和手法,當然我們也同樣可以製定相應該的防範方法:首先是對伺服器的安全設置,這裡主要是php+mysql的安全設定和 linux主機的安全設定。對php+mysql注射的防範,先將magic_quotes_gpc設定為On,display_errsOff,如果id型,我們利用intval()將其轉換成整數型,如程式碼:
$idintval($id);
mysql_query”*fromexamplewherearticieid'$id'”; mysql_query(”SELECT*FROMarticleWHEREarticleid”.intval($id).”")
型就用addslashes()過濾一下,然後再過濾”%”和”_”如:
$searchaddslashlash>”如:
$searchaddslashlashes ($search);$searchstr_replace(“_”,”_”,$search);
$searchstr_replace(“%”,”%”,$search); 當然也可以加 php通用防注入程式碼:
/************************* PHP通用防注入安全代碼
說明:
判斷傳遞的變數中是否含有非法字元如 $_POST、$_GET
功能:
防注入
**** **********************/
// 要過濾的非法字元
$ArrFiltratearray(”'”,”;”,”union”);// 出錯後要跳轉的 url, 不填則預設前一頁
$StrGoUrl」";
// 是否存在數組中的值
functionFunStringExist($StrFiltrate,$ArrFiltrate){
feach($ArrFiltrateas$key>$value){
if(eregi($value,$StrFiltrate)>{
}
}
returnfalse;
}//合併$_POST 和$_GET
if(function_exists(array_merge)){
$ArrPostAndGetarray_merge($HTHTTP_POST_VARS,$A$A.$A.S$A); > feach($HTTP_POST_VARSas$key>$value){$ArrPostAndGet[]$value;}feach($HTHTTP ){$ArrPostAndGet[]$value;}}//驗證開始feach($ArrPostAndGetas$key>$value){if(FunStringExist($value,$ArrFiltrate)){
echo「alert(/」Neeao提示,非法字元/」);」;
if(empty($StrGoUrl)){
echo「histy.go(-1);」;
}else{
echo「 window.location/”".$StrGoUrl.”/”;”;
}
exit;
}
}
?>
/*************************
儲存為checkpostget .php
然後在每個php文件前加上include(「checkpostget.php「」checkpostget.php「 );即可
**************************/另外將管理員用戶名和密碼都採取md5加密,這樣就能有效地防止了 php的注入。 還有伺服器和 mysql也要加強一些安全防範。 對於 linux伺服器的安全設定:加密口令,使用「/usr/sbin/ authconfig」工具開啟密碼的shadow功能,對 passwd加密。 禁止存取重要文件,進入 linux指令介面,在提示符號下輸入:
#chmod600/etc/inetd. conf//改變檔案屬性為600
#chattr+I /etc/inetd.conf //保證文件屬主為root #chattr –I /etc/inetd.conf //對此文件的變更做限制 禁止任何使用者透過指令改變為root 使用者
在su設定檔即/etc/pam.d/ 目錄下的開頭加入下面兩行:
Auth sufficient /lib/security/pam_rootok.sodebug
Auth required /lib/security/pam_whell.Auth required /lib/security/pam_whell.Auth required /lib/security/pam_whell. Auth required /lib/security/pam_whell。 >刪除所有的特殊帳號
#userdel lp 等等刪除使用者
#groupdellp 等等刪除群組
禁止不使用的suid/sgid 程式
#find/-typef(-perm-04000 -o–perm-020000)-execls–{ };
免費領取兄弟連php原創影片教學光碟,詳情諮詢官網客服:
http://www.lampbrother.net
|