怎樣書寫PHP代碼更安全_PHP教程
推薦:基于DB2及PHP的應(yīng)用系統(tǒng)跨平臺(tái)遷移實(shí)例講解本文主要介紹如何完成基于 DB2 的 PHP 應(yīng)用系統(tǒng)從 AIX 平臺(tái)到 Linux 平臺(tái)的移植過(guò)程。文中包含了底層的 DB2 數(shù)據(jù)庫(kù)移植、上層的 PHP 應(yīng)用系統(tǒng)移植的詳細(xì)步驟以及移植過(guò)程中可能遇到的問(wèn)題和解決方法。 任務(wù)概述 系統(tǒng)遷移的工作主要分為以下幾個(gè)方面: 1.DB2
怎樣書寫PHP代碼更安全?PHP是一個(gè)很容易學(xué)習(xí)的語(yǔ)言, 許多人在沒(méi)有任何編程背景下學(xué)習(xí)它作為一種去增加一些互動(dòng)元素到他們的網(wǎng)站的方法. 不幸的是,這往往意味著PHP程序員,尤其是那些較新的Web開(kāi)發(fā)程序員, 并沒(méi)有覺(jué)察他們網(wǎng)站中潛在安全風(fēng)險(xiǎn). 這里是一些比較常見(jiàn)的安全問(wèn)題,以及如何去避免它們。
永遠(yuǎn),永遠(yuǎn)信任你的用戶
不能說(shuō)足夠的次數(shù),你應(yīng)該永遠(yuǎn),永遠(yuǎn), 信任你的用戶向你發(fā)送你期望的數(shù)據(jù). 我聽(tīng)到很多人回應(yīng),大概是"哦,沒(méi)有惡意的人將對(duì)我的網(wǎng)站感興趣"。這就錯(cuò)了, 這里總是有懷有惡意的用戶可以利用一個(gè)安全漏洞,問(wèn)題可以很容易被發(fā)現(xiàn),因?yàn)橐粋(gè)用戶無(wú)意中做錯(cuò)了。
因此, 所有網(wǎng)頁(yè)的發(fā)展的戒律,我不能再壓縮了的話就是:永遠(yuǎn),永遠(yuǎn),相信你的用戶。假定你的網(wǎng)站從使用者收集的每片數(shù)據(jù)含有惡意代碼,始終, 你認(rèn)為已經(jīng)檢查客戶端驗(yàn)證的這些數(shù)據(jù),例如在JavaScript ,如果你能夠達(dá)到這個(gè)目標(biāo),你應(yīng)該有了一個(gè)良好的開(kāi)端。如果PHP的安全性很重要,這一點(diǎn)就要重要地學(xué)習(xí),個(gè)人來(lái)說(shuō),"PHP安全"是一個(gè)重大的問(wèn)題。
全局變量
在許多語(yǔ)言,你必須明確地設(shè)定一個(gè)變量以使用它。 在PHP中,有一個(gè)選項(xiàng)" , register_globals" , 你可以在php.ini中設(shè)置,讓你可以使用全局變量,而不需要事先聲明。
考慮下面的代碼:
|
以下為引用的內(nèi)容: if ($password == "my_password") { $authorized = 1; } if ($authorized == 1) { echo "Lots of important stuff."; } |
許多人看上去覺(jué)得沒(méi)什么問(wèn)題,而事實(shí)上,這方面的代碼在整個(gè)網(wǎng)站上應(yīng)用. 但是,如果一個(gè)服務(wù)器開(kāi)啟"register_globals"。然后,只需添加"?authorized=1"的URL將讓任何人都看到. 這是一個(gè)最普遍的PHP的安全問(wèn)題。
所幸的是,這有兩個(gè)簡(jiǎn)單的解決辦法. 第一,也許最好的,就是把"register_globals"關(guān)閉. 二是你必須明確只有你使用變量. 在上面的例子中,這將意味著加入"?authorized=0"; 在腳本的開(kāi)始:
$authorized = 0;if ($password == "my_password") {$authorized = 1;}if ($authorized == 1) {echo "Lots of important stuff.";}
錯(cuò)誤信息
錯(cuò)誤信息是一個(gè)非常有用的工具,無(wú)論是程序員和黑客. 開(kāi)發(fā)者需要它們?nèi)ジ恼e(cuò)誤. 黑客可以利用它們來(lái)找出一個(gè)網(wǎng)站的各種信息, 從目錄結(jié)構(gòu)的服務(wù)器,數(shù)據(jù)庫(kù)登錄信息. 如果可能的話,最好是關(guān)閉所有的錯(cuò)誤報(bào)告. PHP可以完成這項(xiàng)工作. htaccess或php.ini,設(shè)置"error_reporting" 的值改為"0" . 如果你有一個(gè)開(kāi)發(fā)環(huán)境,您可以設(shè)定不同的錯(cuò)誤報(bào)告級(jí)別。
分享:用PHP編程語(yǔ)言開(kāi)發(fā)動(dòng)態(tài)WAP網(wǎng)站WAP(無(wú)線通訊協(xié)議)是在數(shù)字移動(dòng)電話、個(gè)人手持設(shè)備(PDA等)及計(jì)算機(jī)之間進(jìn)行通訊的開(kāi)放性全球標(biāo)準(zhǔn)協(xié)議。隨著無(wú)線通訊的不斷發(fā)展,靜態(tài)的WAP頁(yè)面在很多方面已經(jīng)不能滿足用戶個(gè)性化的要求,因此開(kāi)發(fā)者可以在WAP服務(wù)器端使用諸如PHP等語(yǔ)言產(chǎn)生動(dòng)態(tài)的WML頁(yè)面,來(lái)
- PHPNOW安裝Memcached擴(kuò)展方法詳解
- php記錄頁(yè)面代碼執(zhí)行時(shí)間
- PHP中獎(jiǎng)概率的抽獎(jiǎng)算法程序代碼
- apache設(shè)置靜態(tài)文件緩存方法介紹
- php對(duì)圖像的各種處理函數(shù)代碼小結(jié)
- PHP 關(guān)于訪問(wèn)控制的和運(yùn)算符優(yōu)先級(jí)介紹
- 關(guān)于PHP語(yǔ)言構(gòu)造器介紹
- php/js獲取客戶端mac地址的實(shí)現(xiàn)代碼
- php5.5新數(shù)組函數(shù)array_column使用
- PHP preg_match的匹配多國(guó)語(yǔ)言的技巧
- php 中序列化和json使用介紹
- php采集文章中的圖片獲取替換到本地
- 相關(guān)鏈接:
- 教程說(shuō)明:
PHP教程-怎樣書寫PHP代碼更安全
。