首頁 > 後端開發 > php教程 > php網站如何防止sql注入? 【上】

php網站如何防止sql注入? 【上】

WBOY
發布: 2016-07-25 09:04:37
原創
964 人瀏覽過
     網站的運作安全肯定是每個站長必須考慮的問題,大家知道,大多數駭客攻擊網站都是採用sql注入,這就是我們常說的為什麼   
     最原始的靜態的網站反而是最安全的。今天我們來談談PHP注入的安全規範,防止自己的網站被sql注入。
如今主流的網站開發語言還是php,那我們就從php網站如何防止,那我們就從php網站如何防止
sql
注入開始說起:Php注入的安全防範透過上面的過程,我們可以了解到
php
注入的原理和手法,當然我們也同樣可以製定相應該的防範方法:首先是對伺服器的安全設置,這裡主要是php+mysql的安全設定和 linux主機的安全設定。對php+mysql注射的防範,先將magic_quotes_gpc設定為Ondisplay_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)>{ 🎜>returntrue;
}
}
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)){
echoalert(/Neeao提示,非法字元/);;
if(empty($StrGoUrl)){
echo「histy.go(-1);」;
}else{
echo「 window.location/”".$StrGoUrl.”/”;”;
}
exit;
}
}
?>
/*************************
儲存為checkpostget .php
然後在每個php文件前加上include(checkpostget.phpcheckpostget.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



來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板