推薦一本PHP程序猿都應(yīng)該拜讀的書
PHP這幾年口碑很差。關(guān)于它的“糟糕設(shè)計(jì)的匯總”和語(yǔ)法上的矛盾有著大量的討論,但是主要的抱怨通常是安全。很多PHP站點(diǎn)分分鐘被黑掉,甚至一些有經(jīng)驗(yàn)的、有見(jiàn)識(shí)的程序員會(huì)說(shuō),這門語(yǔ)言本身是不安全的。
我總是對(duì)此持反對(duì)意見(jiàn),因?yàn)橛谐WR(shí)性的原因,有如此多的PHP安全違反現(xiàn)象。
PHP應(yīng)用程序經(jīng)常被黑掉是由于:
PHP應(yīng)用程序太多了。
它易于學(xué)習(xí)和編寫。
糟糕的PHP也容易編寫。
就是這么簡(jiǎn)單。PHP流行好多年了。PHP越是受歡迎,它被發(fā)現(xiàn)的漏洞就越多。這些黑客發(fā)現(xiàn)的漏洞很少是PHP處理引擎本身的,通常是腳本本身的弱點(diǎn)。
這意味著,當(dāng)一個(gè)PHP應(yīng)用程序被黑掉的時(shí)候,大多數(shù)是程序員的錯(cuò)誤。對(duì)不起,但這是事實(shí)。
你可以和其它web語(yǔ)言一樣編寫安全的PHP。是時(shí)候開始真正探索安全問(wèn)題了。
防止PHP hack的最佳防護(hù)
編寫安全的PHP代碼不是一個(gè)對(duì)PHP開發(fā)者隱藏的、秘密的黑色藝術(shù)。但是信心太零散了,你需要花費(fèi)數(shù)周或數(shù)月(或不再這么長(zhǎng)時(shí)間)去收集某些散篇目錄或法則的、好的安全實(shí)踐。甚至只有真的經(jīng)驗(yàn)才會(huì)告訴你它有多重要。
幸虧Ben Edmunds已經(jīng)為你做好了。它最近出版了《Building Secure PHP Apps – a Practical Guide》,它是我讀過(guò)的最好的安全相關(guān)的書籍之一,當(dāng)然也是最好地涵蓋了PHP。本文我將詳述為什么我認(rèn)為每個(gè)PHP開發(fā)者應(yīng)當(dāng)閱讀。
本書是個(gè)簡(jiǎn)明指導(dǎo),把你帶到做為一名開發(fā)者的下一個(gè)等級(jí),讓你打造更好、更安全的腳本。
簡(jiǎn)介
本書很快就進(jìn)入了web開發(fā)的常識(shí)規(guī)則:不要相信你的用戶,過(guò)濾所有輸入。從一個(gè)小情景開始,跳到了用戶能夠進(jìn)入系統(tǒng)的技術(shù)方法。第一章的主題有:
SQL注入
大量賦值字段
類型轉(zhuǎn)換
過(guò)濾輸入/輸出
這些都是PHP新手(和一些老手)一直容易忽視的地方。過(guò)濾輸入被很多人看作是可選的一步,這一章做了大量討論。
在閱讀過(guò)程中,讓我想起了多年前我的第一天工作,當(dāng)時(shí)我深挖現(xiàn)存代碼,找到了新用戶創(chuàng)建腳本的代碼:
if ($_POST["isadmin"] == 1) {
// code to set to admin in database
}
當(dāng)看到這段代碼時(shí),我感到非??只?,因?yàn)樗且粋€(gè)非常有效的腳本,很容易被一個(gè)惡意用戶搞定,猜出來(lái)并插入一個(gè)簡(jiǎn)單的表單變量,進(jìn)而訪問(wèn)大約5,000個(gè)信用卡卡號(hào)和其他的個(gè)人信息。
深挖后我發(fā)現(xiàn)如下代碼:
$sql = "INSERT INTO database (id,name,...) VALUES (" . $_POST["Name"] . ");"
我在第一天差不多就走出了那份工作,因?yàn)樗麄冋揽窟@些可怕的代碼。這些代碼就在那兒,由你負(fù)責(zé)改變,一定要避免產(chǎn)生更多。
本章討論了像這樣的代碼為什么是巨大的風(fēng)險(xiǎn),以及如何修復(fù)。
HTTPS和證書
這是另一個(gè)領(lǐng)域,Ben包含了腳本、故事和一點(diǎn)點(diǎn)幽默,同時(shí)也清晰地解釋了不太清晰的HTTPS的概念。他解釋的方式,甚至你的老板都能理解。
本書非常全面地描述了證書的工作原理、證書類型以及實(shí)現(xiàn)方法,甚至包括如何在Apache或Nginx上部署。
密碼
本書對(duì)于密碼、哈希、表查詢(lookup tables)和salts做了仔細(xì)的解釋,這對(duì)開發(fā)人員創(chuàng)建用戶登錄系統(tǒng)有著令人難以置信的幫助。
這是一個(gè)甚至在2014年都極度缺乏的領(lǐng)域。我仍然能碰到過(guò)存儲(chǔ)純文本的密碼或像ROT13加密【注1】來(lái)保護(hù)他們的愚蠢方法的應(yīng)用程序。為了讓人們使用你的應(yīng)用程序,以及你的好名聲,請(qǐng)不要這樣做。
密碼和其它敏感數(shù)據(jù)應(yīng)該非常難以獲取,甚至有人拿到數(shù)據(jù)庫(kù)的所有權(quán)限。這本書很全面地包括了,會(huì)給你設(shè)計(jì)更好系統(tǒng)的不錯(cuò)指導(dǎo)。
身份驗(yàn)證和訪問(wèn)控制
本書包含的主題非常全面。當(dāng)你構(gòu)建新的PHP應(yīng)用程序時(shí),某些首要考慮是:
誰(shuí)能夠訪問(wèn)哪些資源?
誰(shuí)能夠控制其他用戶訪問(wèn)?
這是考慮應(yīng)用程序、特別是處理敏感數(shù)據(jù)的應(yīng)用程序的重要地方。企業(yè)里的相當(dāng)一部分開發(fā)就是致力于此。如果你不正確地建立了身份驗(yàn)證和訪問(wèn)控制,最可能發(fā)生的就是你讓用戶感到困擾,并產(chǎn)生了更多的工作。比這更糟糕的是服務(wù)器數(shù)據(jù)缺口 以及/或者 數(shù)據(jù)毀壞。
本書很好地覆蓋了基礎(chǔ)知識(shí),然后它深入到像控制訪問(wèn)文件或應(yīng)用程序單個(gè)頁(yè)面之類的工作,還有很多供參考的代碼示例。
特定利用
本書涵蓋了一些普通的利用來(lái)破壞系統(tǒng),非常詳細(xì)地探索了跨站點(diǎn)腳本,它可以說(shuō)是攻擊者利用應(yīng)用程序的最普通的方法。它解釋了不同種類的攻擊,以及如何保護(hù)自己。
不錯(cuò)吧?你能夠通過(guò)這個(gè)鏈接打折購(gòu)書!
我最喜歡這本書的地方
在閱讀本書過(guò)程中,我真正享受的是,信息是如何以對(duì)于初學(xué)者和有經(jīng)驗(yàn)的程序員都有用的方式呈現(xiàn)的。有一系列概念被提出,它們是什么以及如何自我保護(hù)。有大量的代碼示例,而不像一些技術(shù)書籍所具備的“填充碼”。
你可以很快通讀本書,因?yàn)闆](méi)有太多內(nèi)容。新手可以通讀本書,檢查每個(gè)主題,開始看看他們的代碼,并作出修正。記住在這個(gè)事情上,你需要持續(xù)修改。如果你回頭看看,一定會(huì)為六個(gè)月前寫的代碼感到羞愧,你在做正確的事情。
更高級(jí)的、有經(jīng)驗(yàn)的程序員可以使用這個(gè)指南填補(bǔ)他們的弱點(diǎn)(不管你在這個(gè)行當(dāng)多長(zhǎng)時(shí)間了,你有弱點(diǎn)的,承認(rèn)吧),更好地了解他們?cè)诠ぷ髦惺褂玫南到y(tǒng)。例如,這么多年我瘋了似的使用身份驗(yàn)證,但是從來(lái)沒(méi)有在本書提到的層面考慮過(guò)。
不管你是誰(shuí),你會(huì)學(xué)到東西的。因此不要看本文了,去買一份拷貝吧!使用這個(gè)鏈接購(gòu)買是有折扣的??!
- PHP讀書筆記整理_結(jié)構(gòu)語(yǔ)句詳解
- PHP讀書筆記_運(yùn)算符詳解
- 10個(gè)對(duì)初學(xué)者非常有用的PHP技巧
- 給初學(xué)者的30條PHP最佳實(shí)踐(荒野無(wú)燈)
- PHP初學(xué)者常見(jiàn)問(wèn)題集合 修正版(21問(wèn)答)
- 最令PHP初學(xué)者們頭痛的十四個(gè)問(wèn)題
- PHP初學(xué)者頭疼問(wèn)題總結(jié)
- 最令PHP初學(xué)者頭痛的十四個(gè)問(wèn)題
- PHP初學(xué)者最感迷茫的問(wèn)題小結(jié)
- 適合PHP初學(xué)者閱讀的4本經(jīng)典書籍
相關(guān)文章
PHP的fsockopen、pfsockopen函數(shù)被主機(jī)商禁用的解決辦法
這篇文章主要介紹了PHP的fsockopen、pfsockopen函數(shù)被主機(jī)商禁用的解決辦法,一是使用stream_socket_client函數(shù)代替,二是寫一個(gè)類似fsockopen功能的自定義函數(shù),需要的朋友可以參考下2014-07-07laravel實(shí)現(xiàn)批量更新多條記錄的方法示例
最近在使用Laravel,想批量插入近千條數(shù)據(jù),通過(guò)網(wǎng)上找到了相關(guān)的解決方法,所以下面這篇文章主要給大家介紹了關(guān)于laravel實(shí)現(xiàn)批量更新多條記錄的相關(guān)資料,文中給出了詳細(xì)的示例代碼,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-10-10php中通過(guò)curl模擬登陸discuz論壇的實(shí)現(xiàn)代碼
PHP支持的由Daniel Stenberg創(chuàng)建的libcurl庫(kù)允許你與各種的服務(wù)器使用各種類型的協(xié)議進(jìn)行連接和通訊。libcurl目前支持http、https、ftp、 gopher、telnet、dict、file和ldap協(xié)議2012-02-02php上傳apk后自動(dòng)提取apk包信息的使用(示例下載)
本篇文章介紹了,php上傳apk后自動(dòng)提取apk包信息的使用(示例下載)需要的朋友參考下2013-04-04