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