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