怎樣書寫PHP代碼更安全 |
發(fā)布時間: 2012/8/22 18:08:02 |
怎樣書寫PHP代碼更安全?PHP是一個很容易學(xué)習(xí)的語言, 許多人在沒有任何編程背景下學(xué)習(xí)它作為一種去增加一些互動元素到他們的網(wǎng)站的方法. 不幸的是,這往往意味著PHP程序員,尤其是那些較新的Web開發(fā)程序員, 并沒有覺察他們網(wǎng)站中潛在安全風(fēng)險. 這里是一些比較常見的安全問題,以及如何去避免它們。
永遠(yuǎn),永遠(yuǎn)信任你的用戶 不能說足夠的次數(shù),你應(yīng)該永遠(yuǎn),永遠(yuǎn), 信任你的用戶向你發(fā)送你期望的數(shù)據(jù). 我聽到很多人回應(yīng),大概是"哦,沒有惡意的人將對我的網(wǎng)站感興趣"。這就錯了, 這里總是有懷有惡意的用戶可以利用一個安全漏洞,問題可以很容易被發(fā)現(xiàn),因?yàn)橐粋用戶無意中做錯了。 電腦硬件www.boydavid.com 因此, 所有網(wǎng)頁的發(fā)展的戒律,我不能再壓縮了的話就是:永遠(yuǎn),永遠(yuǎn),相信你的用戶。假定你的網(wǎng)站從使用者收集的每片數(shù)據(jù)含有惡意代碼,始終, 你認(rèn)為已經(jīng)檢查客戶端驗(yàn)證的這些數(shù)據(jù),例如在JavaScript ,如果你能夠達(dá)到這個目標(biāo),你應(yīng)該有了一個良好的開端。如果PHP的安全性很重要,這一點(diǎn)就要重要地學(xué)習(xí),個人來說,"PHP安全"是一個重大的問題。
全局變量
在許多語言,你必須明確地設(shè)定一個變量以使用它。 在PHP中,有一個選項(xiàng)" , register_globals" , 你可以在php.ini中設(shè)置,讓你可以使用全局變量,而不需要事先聲明。 計算機(jī)學(xué)習(xí)網(wǎng)站www.boydavid.com 考慮下面的代碼: 計算機(jī)學(xué)習(xí)網(wǎng)站www.boydavid.com
if ($password == "my_password") {
$authorized = 1;
} if ($authorized == 1) { 電腦學(xué)習(xí)網(wǎng)站www.boydavid.com echo "Lots of important stuff.";
} 計算機(jī)愛好者www.boydavid.com 許多人看上去覺得沒什么問題,而事實(shí)上,這方面的代碼在整個網(wǎng)站上應(yīng)用. 但是,如果一個服務(wù)器開啟"register_globals"。然后,只需添加"?authorized=1"的URL將讓任何人都看到. 這是一個最普遍的PHP的安全問題。
所幸的是,這有兩個簡單的解決辦法. 第一,也許最好的,就是把"register_globals"關(guān)閉. 二是你必須明確只有你使用變量. 在上面的例子中,這將意味著加入"?authorized=0"; 在腳本的開始:
$authorized = 0;if ($password == "my_password") {$authorized = 1;}if ($authorized == 1) {echo "Lots of important stuff.";}
錯誤信息
錯誤信息是一個非常有用的工具,無論是程序員和黑客. 開發(fā)者需要它們?nèi)ジ恼e誤. 黑客可以利用它們來找出一個網(wǎng)站的各種信息, 從目錄結(jié)構(gòu)的服務(wù)器,數(shù)據(jù)庫登錄信息. 如果可能的話,最好是關(guān)閉所有的錯誤報告. PHP可以完成這項(xiàng)工作. htaccess或php.ini,設(shè)置"error_reporting" 的值改為"0" . 如果你有一個開發(fā)環(huán)境,您可以設(shè)定不同的錯誤報告級別。 本文出自:億恩科技【mszdt.com】 服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |