當前位置:成語大全網 - 書法字典 - 如何在php網站中註入php註入

如何在php網站中註入php註入

如何在PHP網站中註入sql?有什麽方法可以打破防守嗎?

網站的運行安全是每個站長必須考慮的問題。眾所周知,黑客攻擊網站的方式大多是sql註入,這就是為什麽我們常說最原始、最靜態的網站是最安全的。今天,我們來談談PHP註入的安全規範,以防止您的網站被sql註入。當今主流的網站開發語言是php,因此讓我們從如何防止php網站中的sql註入開始:

php註射的安全註意事項通過上述過程,我們可以了解Php註射的原理和技巧,當然我們也可以制定相應的註意事項:

首先是服務器的安全設置,包括phpmysql的安全設置和linux主機的安全設置。為了防止phpmysql註入,首先將magic_quotes_gpc設置為on,將display_errors設置為Off。如果是id類型,我們使用intval()將其轉換為整數類型,例如代碼:

$ id = intval($ id);

MySQL _ query =“select * from example wherearticleid =‘$ id‘“;或者這樣寫:MySQL _ query(“select * fromaticlewearticleid =“。int val(id)。"")

如果是字符類型,則使用addslashes()進行過濾,然後過濾“%”和“_”,例如:

$ search = add slashes($ search);

$ search = str _ replace(“_“,“_“,$ search);

$ search = str _ replace(“%“,““%“,$ search);

當然,妳也可以添加php通用反註入代碼:

/*************************

通用PHP防註入安全代碼

描述:

確定傳遞的變量是否包含非法字符。

例如,$_POST,$_GET

功能:

反向註射

**************************/

//要過濾的非法字符

$ arr濾液=數組(““,“;“,“工會”);

//出錯後要跳轉的url。如果留空,則默認為上壹頁。

$StrGoUrl=“

//數組中有值嗎?

函數FunStringExist($ str filter,$ arrfilter)

foreach($ arrfilteras $ key = $ value ){

if(eregi($ value,$ StrFiltrate)({

返回true

}

}

返回false

}

//合並$_POST和$_GET。

if(function _ exists(array _ merge))

$ ArrPostAndGet = array _ merge($ HTTP _ POST _ VARS,$ HTTP _ GET _ VARS);

}否則{

foreach($ HTTP _ POST _ VARSas $ key = $ value ){

$ ArrPostAndGet【】= $ value;

}

foreach($ HTTP _ GET _ VARSas $ key = $ value ){

$ ArrPostAndGet【】= $ value;

}

}

//身份驗證開始。

foreach($ arrpostandgets $ key = $ value ){

if(FunStringExist($ value,$ ArrFiltrate

echo“alert(/“nee ao提示,非法字符/“);

if(empty($ StrGoUrl)){

echo“history . go(-1);;

}否則{

echo“window . location =/“quot;。$ StrGoUrl。"/";";

}

退出;

}

}

威普,妳可以。

**************************/

此外,管理員用戶名和密碼通過md5加密,可以有效防止php的註入。

還有壹些針對服務器和mysql的安全防範措施。

linux服務器的安全設置:

加密密碼,使用“/usr/sbin/authconfig”工具打開密碼的影子功能並加密密碼。

禁止接觸重要文件。進入linux命令界面並輸入:

#chmod600/etc/inetd.conf//將文件屬性更改為600。

#chattrI/etc/inetd.conf//確保文件的所有者是root。

# # chattr-I/etc/inetd . conf///限制對此文件的更改。

不允許任何用戶通過su命令更改為root用戶。

在su配置文件的開頭添加以下兩行,即/etc/PAM . d/目錄:

auth sufficult/lib/security/PAM _ rootok . so debug

需要授權/lib/security/PAM _ wheel . so group = wheel。

刪除所有特殊賬戶。

#userdellp等。刪除用戶

#groupdellp等。刪除此組

禁止的suid/sgid程序

# find/-type f)-execls _ LG { };

如何判斷PHP源代碼是否存在SQL註入漏洞?

要判斷是否有SQL註入,首先要找到可能的註射點;例如,常見的get、post甚至cookie都將參數傳遞給PHP,然後將參數拼接到SQL中。如果後端在收到參數後不進行驗證和過濾,則很可能會發生註入。像xxx.com壹樣?Id=321,Id很可能是註入點。

說白了就是不要相信用戶輸入,嚴格檢查用戶可以控制的參數。註意是嚴格把關的!簡單的空白刪除或特殊字符替換很容易繞過。

如果您已經有了原始代碼,則可以審核代碼並逐壹檢查。您還可以設置壹個本地環境,並使用sqlmap之類的自動化工具來檢測鏈接。

個人理解僅供參考,如有偏頗請批評指正!