每一個PHP開發者都應該看的書

 PHP這幾年口碑不好。關於它的「糟糕設計的彙總」和語法上的矛盾有着大量的討論,可是主要的抱怨一般是安全。不少PHP站點分分鐘被黑掉,甚至一些有經驗的、有見識的程序員會說,這門語言自己是不安全的。php

  我老是對此持反對意見,由於有常識性的緣由,有如此多的PHP安全違反現象。html

  PHP應用程序常常被黑掉是因爲:程序員

  • PHP應用程序太多了。
  • 它易於學習和編寫。
  • 糟糕的PHP也容易編寫。

   就是這麼簡單。PHP流行好多年了。PHP越是受歡迎,它被發現的漏洞就越多。這些黑客發現的漏洞不多是PHP處理引擎自己的,一般是腳本自己的弱點。web

  這意味着,當一個PHP應用程序被黑掉的時候,大多數是程序員的錯誤。對不起,但這是事實。sql

  你能夠和其它web語言同樣編寫安全的PHP。是時候開始真正探索安全問題了。數據庫

 

  防止PHP hack的最佳防禦

  編寫安全的PHP代碼不是一個對PHP開發者隱藏的、祕密的黑色藝術。可是信心太零散了,你須要花費數週或數月(或再也不這麼長時間)去收集某些散篇目錄或法則的、好的安全實踐。甚至只有真的經驗纔會告訴你它有多重要。安全

  幸好Ben Edmunds已經爲你作好了。它最近出版了《Building Secure PHP Apps – a Practical Guide》,它是我讀過的最好的安全相關的書籍之一,固然也是最好地涵蓋了PHP。本文我將詳述爲何我認爲每一個PHP開發者應當閱讀。服務器

  本書是個簡明指導,把你帶到作爲一名開發者的下一個等級,讓你打造更好、更安全的腳本。app

  簡介

  本書很快就進入了web開發的常識規則:不要相信你的用戶,過濾全部輸入。從一個小情景開始,跳到了用戶可以進入系統的技術方法。第一章的主題有:ide

  • SQL注入
  • 大量賦值字段
  • 類型轉換
  • 過濾輸入/輸出

  這些都是PHP新手(和一些老手)一直容易忽視的地方。過濾輸入被不少人看做是可選的一步,這一章作了大量討論。

  在閱讀過程當中,讓我想起了多年前個人第一天工做,當時我深挖現存代碼,找到了新用戶建立腳本的代碼:

1
2
3
if ( $_POST [ "isadmin" ] == 1) {
// code to set to admin in database
}

  當看到這段代碼時,我感到很是恐慌,由於它是一個很是有效的腳本,很容易被一個惡意用戶搞定,猜出來並插入一個簡單的表單變量,進而訪問大約5,000個信用卡卡號和其餘的我的信息。

  深挖後我發現以下代碼:

1
$sql = "INSERT INTO database (id,name,...) VALUES (" . $_POST [ "Name" ] . ");"

  我在第一天差很少就走出了那份工做,由於他們正依靠這些可怕的代碼。這些代碼就在那兒,由你負責改變,必定要避免產生更多。

  本章討論了像這樣的代碼爲何是巨大的風險,以及如何修復。

  HTTPS和證書

  這是另外一個領域,Ben包含了腳本、故事和一點點幽默,同時也清晰地解釋了不太清晰的HTTPS的概念。他解釋的方式,甚至你的老闆都能理解。

  本書很是全面地描述了證書的工做原理、證書類型以及實現方法,甚至包括如何在Apache或Nginx上部署。

  密碼

  本書對於密碼、哈希、表查詢(lookup tables)和salts作了仔細的解釋,這對開發人員建立用戶登陸系統有着使人難以置信的幫助。

  這是一個甚至在2014年都極度缺少的領域。我仍然能碰到過存儲純文本的密碼或像ROT13加密【注1】來保護他們的愚蠢方法的應用程序。爲了讓人們使用你的應用程序,以及你的好名聲,請不要這樣作。

  密碼和其它敏感數據應該很是難以獲取,甚至有人拿到數據庫的全部權限。這本書很全面地包括了,會給你設計更好系統的不錯指導。

  身份驗證和訪問控制

  本書包含的主題很是全面。當你構建新的PHP應用程序時,某些首要考慮是:

  • 誰可以訪問哪些資源?
  • 誰可以控制其餘用戶訪問?

  這是考慮應用程序、特別是處理敏感數據的應用程序的重要地方。企業裏的至關一部分開發就是致力於此。若是你不正確地創建了身份驗證和訪問控制,最可能發生的就是你讓用戶感到困擾,併產生了更多的工做。比這更糟糕的是服務器數據缺口 以及/或者 數據毀壞。

  本書很好地覆蓋了基礎知識,而後它深刻到像控制訪問文件或應用程序單個頁面之類的工做,還有不少供參考的代碼示例。

  特定利用

  本書涵蓋了一些普通的利用來破壞系統,很是詳細地探索了跨站點腳本,它能夠說是攻擊者利用應用程序的最普通的方法。它解釋了不一樣種類的攻擊,以及如何保護本身。

  不錯吧?你可以經過這個連接打折購書!

  我最喜歡這本書的地方

  在閱讀本書過程當中,我真正享受的是,信息是如何以對於初學者和有經驗的程序員都有用的方式呈現的。有一系列概念被提出,它們是什麼以及如何自我保護。有大量的代碼示例,而不像一些技術書籍所具有的「填充碼」。

  你能夠很快通讀本書,由於沒有太多內容。新手能夠通讀本書,檢查每一個主題,開始看看他們的代碼,並做出修正。記住在這個事情上,你須要持續修改。若是你回頭看看,必定會爲六個月前寫的代碼感到羞愧,你在作正確的事情。

  更高級的、有經驗的程序員可使用這個指南填補他們的弱點(無論你在這個行當多長時間了,你有弱點的,認可吧),更好地瞭解他們在工做中使用的系統。例如,這麼多年我瘋了似的使用身份驗證,可是歷來沒有在本書提到的層面考慮過。

  無論你是誰,你會學到東西的。所以不要看本文了,去買一份拷貝吧!使用這個連接購買是有折扣的!!

  免責聲明

  我沒有在個人博客作過多評論,所以你可能有一些問題。爲清楚起見,我沒有爲評論收取付費或賠償。上面的優惠碼給我博客的讀者在原書價格基礎上少4美圓,我不會收到錢的。固然爲了評論的目的,我收到過本書的促銷拷貝。

  我本人認識這個做者,那是我相信本書裏的信息、徹底信任其指導的緣由之一。這幾年Ben Edmunds在PHP社區有巨大的影響力,他有着10年的PHP經驗,他是PHP用戶組在波蘭區域的領導者之一,這幾年在PHP開源項目作出了巨大的貢獻。能夠這麼說,他知道他的東西,你可以相信這裏呈現的信息。

相關文章
相關標籤/搜索