安全編碼最佳實踐:PHP及編程語言安全
企業(yè)不應(yīng)該避免使用PHP開發(fā)應(yīng)用。一些人認(rèn)為,比起其它選擇,PHP太不安全了。這種說法也很不客觀。
WhiteHat Security(白帽安全)公司最近發(fā)布了研究,他們使用自動化的工具查看1700個web站點,看看安全bug的數(shù)量和建立站點使用的編程語言之間是否有任何關(guān)聯(lián)。總體的結(jié)論是,沒有一種語言是“最安全的”。研究表明,某些語言確實有益于結(jié)構(gòu)化地編寫,易于管理代碼,且某些框架提供默認(rèn)開啟的安全控制。PHP可能名聲更壞,因為它不僅被廣泛地使用,而且垃圾郵件發(fā)送者們利用了許多不安全的PHP形式來發(fā)送垃圾郵件(通過郵件注入)。
甚至最忠實的PHP迷也會同意,對于一個未經(jīng)培訓(xùn)的程序員來說,用像PHP一樣的語言更容易寫出不安全的代碼。因特網(wǎng)上有數(shù)以千計的例子和教程來解釋如何使用PHP將一個花哨的功能添加到開發(fā)的應(yīng)用中,但是它們中的大多數(shù)沒有涵蓋如何確保這些功能安全,不讓應(yīng)用容易受到攻擊,因此功能豐富的PHP應(yīng)用通常沒有以安全的思維進行開發(fā)。
培訓(xùn)你的開發(fā)人員,讓他們帶著安全的思維來寫代碼,這比起語言的選擇來說更為重要。CERT(Computer Emergency Response Team,計算機應(yīng)急響應(yīng)團隊)發(fā)現(xiàn),大多數(shù)應(yīng)用中的漏洞來自開發(fā)人員不斷重復(fù)犯的、一些數(shù)量相對少的常見編程錯誤。通過消除不安全的編碼,并專注于安全編碼培訓(xùn),你的軟件開發(fā)人員可以迅速地減少或消除漏洞的數(shù)量,直到軟件最終上線。你可以用因特網(wǎng)上的許多優(yōu)秀且免費的資源和教程來發(fā)展他們(開發(fā)人員)在這個領(lǐng)域的技能。這個領(lǐng)域的領(lǐng)導(dǎo)者之一是OWASP站點(Open Web Application Security Project,開放Web應(yīng)用安全項目),它提供了許多關(guān)于如何安全編碼的例子。
CERT安全編碼的出發(fā)點是為常用的編程語言建立安全編碼標(biāo)準(zhǔn),并促進安全編碼的最佳實踐。另一個提高你的開發(fā)人員安全編碼技能的好資源,是微軟的MSDN安全社區(qū)和編寫安全代碼部分。那里有許多由微軟軟件安全專家Michael Howard撰寫的各種書,你可能感興趣的包括“編寫安全的代碼(Writing Secure Code)”、“軟件安全的24個致命過錯(24 Deadly Sins of Software Security)”和“安全開發(fā)生命周期(The Security Development Lifecycle)”。許多涉及的主題可以應(yīng)用到任何一種編程語言,并會幫助你理解如何帶著安全思維來編碼:那就是,正確地使用安全功能并編寫能夠經(jīng)受攻擊的代碼。
如果你開始將從這些資源中學(xué)到的融合起來,并且將安全嵌入到整個應(yīng)用生命周期,無論你選擇使用哪種語言,但愿你的下個應(yīng)用會更加強健并且能夠經(jīng)受攻擊。
【編輯推薦】