怎樣書寫PHP代碼更安全_PHP教程
推薦:基于DB2及PHP的應(yīng)用系統(tǒng)跨平臺遷移實例講解本文主要介紹如何完成基于 DB2 的 PHP 應(yīng)用系統(tǒng)從 AIX 平臺到 Linux 平臺的移植過程。文中包含了底層的 DB2 數(shù)據(jù)庫移植、上層的 PHP 應(yīng)用系統(tǒng)移植的詳細(xì)步驟以及移植過程中可能遇到的問題和解決方法。 任務(wù)概述 系統(tǒng)遷移的工作主要分為以下幾個方面: 1.DB2
怎樣書寫PHP代碼更安全?PHP是一個很容易學(xué)習(xí)的語言, 許多人在沒有任何編程背景下學(xué)習(xí)它作為一種去增加一些互動元素到他們的網(wǎng)站的方法. 不幸的是,這往往意味著PHP程序員,尤其是那些較新的Web開發(fā)程序員, 并沒有覺察他們網(wǎng)站中潛在安全風(fēng)險. 這里是一些比較常見的安全問題,以及如何去避免它們。
永遠,永遠信任你的用戶
不能說足夠的次數(shù),你應(yīng)該永遠,永遠, 信任你的用戶向你發(fā)送你期望的數(shù)據(jù). 我聽到很多人回應(yīng),大概是"哦,沒有惡意的人將對我的網(wǎng)站感興趣"。這就錯了, 這里總是有懷有惡意的用戶可以利用一個安全漏洞,問題可以很容易被發(fā)現(xiàn),因為一個用戶無意中做錯了。
因此, 所有網(wǎng)頁的發(fā)展的戒律,我不能再壓縮了的話就是:永遠,永遠,相信你的用戶。假定你的網(wǎng)站從使用者收集的每片數(shù)據(jù)含有惡意代碼,始終, 你認(rèn)為已經(jīng)檢查客戶端驗證的這些數(shù)據(jù),例如在JavaScript ,如果你能夠達到這個目標(biāo),你應(yīng)該有了一個良好的開端。如果PHP的安全性很重要,這一點就要重要地學(xué)習(xí),個人來說,"PHP安全"是一個重大的問題。
全局變量
在許多語言,你必須明確地設(shè)定一個變量以使用它。 在PHP中,有一個選項" , register_globals" , 你可以在php.ini中設(shè)置,讓你可以使用全局變量,而不需要事先聲明。
考慮下面的代碼:
|
以下為引用的內(nèi)容: if ($password == "my_password") { $authorized = 1; } if ($authorized == 1) { echo "Lots of important stuff."; } |
許多人看上去覺得沒什么問題,而事實上,這方面的代碼在整個網(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可以完成這項工作. htaccess或php.ini,設(shè)置"error_reporting" 的值改為"0" . 如果你有一個開發(fā)環(huán)境,您可以設(shè)定不同的錯誤報告級別。
分享:用PHP編程語言開發(fā)動態(tài)WAP網(wǎng)站WAP(無線通訊協(xié)議)是在數(shù)字移動電話、個人手持設(shè)備(PDA等)及計算機之間進行通訊的開放性全球標(biāo)準(zhǔn)協(xié)議。隨著無線通訊的不斷發(fā)展,靜態(tài)的WAP頁面在很多方面已經(jīng)不能滿足用戶個性化的要求,因此開發(fā)者可以在WAP服務(wù)器端使用諸如PHP等語言產(chǎn)生動態(tài)的WML頁面,來
- 相關(guān)鏈接:
- 教程說明:
PHP教程-怎樣書寫PHP代碼更安全
。