安全支持能幫助開發(fā)人員編寫代碼嗎?
如果應(yīng)用框架提供安全支持,那么開發(fā)人員將會多么高效?
在安全支持這個(gè)問題上,盡管當(dāng)前的框架確實(shí)提供了一些價(jià)值,但是仍然有許多工作是要做的,來消除像資料隱碼攻擊、跨站點(diǎn)腳本(XSS)和跨站點(diǎn)請求偽造(CSRF)這樣的漏洞。
當(dāng)前,開發(fā)框架是安全代碼創(chuàng)建的最好支持,但他們不能防止非安全代碼的創(chuàng)建。這意味著只有了解標(biāo)準(zhǔn)的框架和可用的安全設(shè)施的開發(fā)人員,才能更適合創(chuàng)建安全代碼這個(gè)位置。但通常情況下,開發(fā)人員對安全代碼實(shí)踐都了解的比較少—尤其是對框架安全功能的了解—這也會給應(yīng)用程序帶來常見的漏洞。
在每個(gè)基礎(chǔ)漏洞上,這里有一些常用的框架中的設(shè)備,這些框架會引入一些安全問題:
-SQL注入。像Hibernate這樣的對象到關(guān)系映射(ORM)庫可以提供了一些保護(hù),通過吸引開發(fā)人員遠(yuǎn)離直接操作的數(shù)據(jù)庫查詢,來防止SQL注入漏洞。然而,大多數(shù)ORM庫允許開發(fā)人員創(chuàng)建自由格式的查詢,但這仍給應(yīng)用程序的開放留下了注入攻擊。
-跨站漏洞(XSS)。.NET框架提供了一些開箱即用的XSS的保護(hù),通過ValidateRequest屬性可用。這很有用,但因?yàn)樗蕾囉谝粋€(gè)已知的無效負(fù)載黑名單,這可能會被繞過。因此,開發(fā)人員仍然需要正確地編碼數(shù)據(jù),以防止XSS漏洞。
-跨站點(diǎn)請求偽造(CSRF)。Tomcat servlet容器的最新版本CSRF保護(hù)過濾器,它提供很多保護(hù)來防止CSRF攻擊。
這是框架和應(yīng)對策略的一個(gè)簡單列表,但事實(shí)是,對于大部分開發(fā)平臺,沒有很好的標(biāo)準(zhǔn)工具集和庫,來防止引入公共類的漏洞。
這一領(lǐng)域中的一項(xiàng)有趣的開發(fā)是來自于Mozilla的playdoh項(xiàng)目。Playdoh是基于Django Python Web應(yīng)用框架的一個(gè)Web應(yīng)用模版。開發(fā)人員在Playdoh中建立應(yīng)用程序來訪問所有的Django的安全設(shè)施以及一些額外的默認(rèn)安全庫和設(shè)置。相對來說,Playdoh還是一個(gè)新項(xiàng)目,而且當(dāng)于Java企業(yè)版本(JEE)或ASP.NET相對,Django在許多的協(xié)作環(huán)境下還不是很常用,但Django方法確是前途無量的。
未來,也許其他平臺也會采取類似的、全面的和默認(rèn)安全模型的安全編碼。據(jù)說,雖然框架在幫助團(tuán)隊(duì)創(chuàng)建應(yīng)用程序而不帶來常見漏洞方面有一定的幫助,但沒有什么可以替代所有的開發(fā)人員擁有的一些安全設(shè)計(jì)和編碼原則的知識。