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