PHP安全技術(shù)之 實(shí)現(xiàn)php基本安全
更新時(shí)間:2010年09月04日 01:18:29 作者:
php開(kāi)發(fā)過(guò)程中,需要注意的一些安全小細(xì)節(jié),屏蔽錯(cuò)誤提示,多考慮下安全問(wèn)題。
1.不要依賴注冊(cè)全局變量功能(register_globals)
注冊(cè)全局變量的出現(xiàn)曾經(jīng)讓PHP變得非常易用,但也降低了安全性(方便之處經(jīng)常會(huì)破壞安全性)。建議在編程時(shí)把register_globals指令關(guān)閉,在PHP6中這個(gè)功能也會(huì)被取消。
2.在使用變量之前對(duì)其進(jìn)行初始化。
如果register_globals功能是啟動(dòng)的,即使程序員不使用它,惡意用戶也可能利用為初始化變量的漏洞來(lái)侵入我們的系統(tǒng)。比如:
if(conditon){
$auth=TRUE;
}
如果變量$auth沒(méi)有在這段之前被初始化為FALSE,那么用戶就可以向腳本傳遞$_GET[‘a(chǎn)uth']、$_POST[‘a(chǎn)uth']或$_COOKIE[‘a(chǎn)uth']輕易的實(shí)現(xiàn)驗(yàn)證。
3.檢驗(yàn)和凈化全部輸入數(shù)據(jù)。
4.在利用變量引用包含文件時(shí)要小心。
如果腳本中有這樣的代碼:
require($page);
那么就應(yīng)該確保$page不會(huì)來(lái)自外部資源(比如$_GET),或者,如果它的確來(lái)自于外部資源,那么就要確保它包含適當(dāng)?shù)闹怠?
5.在使用任何服務(wù)器上執(zhí)行命令的函數(shù)都要多加小心。
這些函數(shù)包括eval()、exec()、system()、passthru()、popen()和反撇號(hào)(``)。這些函數(shù)都能夠在服務(wù)器上執(zhí)行命令,永遠(yuǎn)都不要隨意使用。如果在命令里不得不包含便來(lái)那個(gè),就應(yīng)該對(duì)這個(gè)變量進(jìn)行徹底的安全檢查。還應(yīng)該使用escapeshellarg() escapeshellcom()進(jìn)行額外的預(yù)處理。
6.更改默認(rèn)的會(huì)話目錄,或者使用數(shù)據(jù)庫(kù)保存會(huì)話數(shù)據(jù)。
7.不要使用瀏覽器提供的文件名在服務(wù)器上保存上傳的文件。
8.如果被提交的數(shù)據(jù)需要在web頁(yè)面中重新顯示,一定要注意其中的HTML,更重要的是JAVASCRIPT
可以利用函數(shù)
string htmlspecialchars ( string string [, int quote_style [, string charset]])
對(duì)提交的數(shù)據(jù)進(jìn)行處理
9。不要在站點(diǎn)上暴露你的PHP錯(cuò)誤信息
PHP錯(cuò)誤信息能夠在你開(kāi)發(fā)的過(guò)程中把錯(cuò)誤信息輸出方便你的檢查,但是如果暴露在Web上面,很可以成為攻擊者的入口。
10.防止SQL注入攻擊。
應(yīng)該使用特定語(yǔ)言的數(shù)據(jù)庫(kù)轉(zhuǎn)義函數(shù),比如mysqli_real_escape_data(),確保提交的內(nèi)容不會(huì)破壞查詢操作。
11.永遠(yuǎn)不要在服務(wù)器上保存phpinfo()腳本。
注冊(cè)全局變量的出現(xiàn)曾經(jīng)讓PHP變得非常易用,但也降低了安全性(方便之處經(jīng)常會(huì)破壞安全性)。建議在編程時(shí)把register_globals指令關(guān)閉,在PHP6中這個(gè)功能也會(huì)被取消。
2.在使用變量之前對(duì)其進(jìn)行初始化。
如果register_globals功能是啟動(dòng)的,即使程序員不使用它,惡意用戶也可能利用為初始化變量的漏洞來(lái)侵入我們的系統(tǒng)。比如:
if(conditon){
$auth=TRUE;
}
如果變量$auth沒(méi)有在這段之前被初始化為FALSE,那么用戶就可以向腳本傳遞$_GET[‘a(chǎn)uth']、$_POST[‘a(chǎn)uth']或$_COOKIE[‘a(chǎn)uth']輕易的實(shí)現(xiàn)驗(yàn)證。
3.檢驗(yàn)和凈化全部輸入數(shù)據(jù)。
4.在利用變量引用包含文件時(shí)要小心。
如果腳本中有這樣的代碼:
require($page);
那么就應(yīng)該確保$page不會(huì)來(lái)自外部資源(比如$_GET),或者,如果它的確來(lái)自于外部資源,那么就要確保它包含適當(dāng)?shù)闹怠?
5.在使用任何服務(wù)器上執(zhí)行命令的函數(shù)都要多加小心。
這些函數(shù)包括eval()、exec()、system()、passthru()、popen()和反撇號(hào)(``)。這些函數(shù)都能夠在服務(wù)器上執(zhí)行命令,永遠(yuǎn)都不要隨意使用。如果在命令里不得不包含便來(lái)那個(gè),就應(yīng)該對(duì)這個(gè)變量進(jìn)行徹底的安全檢查。還應(yīng)該使用escapeshellarg() escapeshellcom()進(jìn)行額外的預(yù)處理。
6.更改默認(rèn)的會(huì)話目錄,或者使用數(shù)據(jù)庫(kù)保存會(huì)話數(shù)據(jù)。
7.不要使用瀏覽器提供的文件名在服務(wù)器上保存上傳的文件。
8.如果被提交的數(shù)據(jù)需要在web頁(yè)面中重新顯示,一定要注意其中的HTML,更重要的是JAVASCRIPT
可以利用函數(shù)
string htmlspecialchars ( string string [, int quote_style [, string charset]])
對(duì)提交的數(shù)據(jù)進(jìn)行處理
9。不要在站點(diǎn)上暴露你的PHP錯(cuò)誤信息
PHP錯(cuò)誤信息能夠在你開(kāi)發(fā)的過(guò)程中把錯(cuò)誤信息輸出方便你的檢查,但是如果暴露在Web上面,很可以成為攻擊者的入口。
10.防止SQL注入攻擊。
應(yīng)該使用特定語(yǔ)言的數(shù)據(jù)庫(kù)轉(zhuǎn)義函數(shù),比如mysqli_real_escape_data(),確保提交的內(nèi)容不會(huì)破壞查詢操作。
11.永遠(yuǎn)不要在服務(wù)器上保存phpinfo()腳本。
相關(guān)文章
php導(dǎo)入大量數(shù)據(jù)到mysql性能優(yōu)化技巧
這篇文章主要介紹了php導(dǎo)入大量數(shù)據(jù)到mysql性能優(yōu)化技巧,通過(guò)針對(duì)SQL語(yǔ)句的優(yōu)化實(shí)現(xiàn)了mysql性能的提高,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-12-12
php 數(shù)組字符串搜索array_search技巧
本文給大家總結(jié)了一下PHP實(shí)現(xiàn)數(shù)組字符串搜索的幾種使用技巧,非常的簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下2016-07-07
php創(chuàng)建類并調(diào)用的實(shí)例方法
在本篇文章里小編給大家分享的是關(guān)于php如何創(chuàng)建類并調(diào)用的相關(guān)知識(shí)點(diǎn),有需要的朋友們可以學(xué)習(xí)下。2019-09-09
php中通過(guò)curl檢測(cè)頁(yè)面是否被百度收錄
最近要對(duì)網(wǎng)站做個(gè)整理,需要檢測(cè)網(wǎng)站內(nèi)哪些頁(yè)面沒(méi)有被百度搜索引擎收錄從而進(jìn)行相關(guān)的調(diào)整。由于使用site命令一條條的去看實(shí)在是看不過(guò)來(lái),就想到了使用php程序來(lái)批量處理一下2013-09-09
php中隱形字符65279(utf-8的BOM頭)問(wèn)題
這篇文章主要介紹了php中隱形字符65279問(wèn)題解決方法,其實(shí)就是utf-8文件的BOM頭,本文給出了一個(gè)刪除PHP文件BOM頭的小程序,需要的朋友可以參考下2014-08-08
WordPress中轉(zhuǎn)義HTML與過(guò)濾鏈接的相關(guān)PHP函數(shù)使用解析
這篇文章主要介紹了WordPress中轉(zhuǎn)義Html與過(guò)濾鏈接的相關(guān)函數(shù)使用解析,分別為esc_html()函數(shù)和esc_url()函數(shù)的用法,需要的朋友可以參考下2015-12-12

