程序安全的第一道保障——程序員
絕大多數的企業,都是在 Web 應用設計結束后才開始考慮應用安全的問題。他們可能在應用開發結束后才進行安全測試,或者在應用正式上線前進行測試。 有的甚至在正式上線后才進行安全測試。其實,業界中有很多著名的公司就是這么做的。這也就是你為什么經常能夠聽到那些大公司的 Web 應用遭受攻擊或者數據 被盜取的新聞。
造成這一情況的根源,在于應用安全與應用開發之間的脫節導致各種嚴重的安全漏洞。一般來說,應用開發程序員往往不是安全專家,而大部分安全專家則并不是程序員。因此,在對付應用安全問題上,需要這兩方面的人員更好,更早地在開發過程中進行合作。
在開發早期就要重視質量控制(QA)
通常, QA 是一個事后過程,或者是在開發后期才會考慮的問題。一個 180 天的開發項目,可能在最后 20 天是留給 QA 的,而安全測試則可能只有 3 天。
這樣會產生幾個問題,由于 QA 和安全測試在測試一個完整的應用程序,測試可能會發現一些嚴重問題,而這些問題需要程序員來解決。
這樣問題來了,當這些問題被發現的時候,程序員可能已經結束項目了,在規定期限內完成了項目要求,或者已經去別的項目了。而這時候出現的安全問題可能已經不是程序員們需要解決的重點了。
程序員介入安全問題越早越好
程序員在早期介入安全問題,就意味著那些對應用最熟悉的人,能夠有最多的時間和精力去解決安全問題。
我們不能指望在開發結束后,程序員轉到另外的項目以后,才開始考慮安全問題。對安全問題的考慮,必須是漸進的,貫穿整個開發過程的。同樣的,安全測試也是如此。
不少人都知道,程序員們一般都抵觸安全問題,因為他們沒有時間,沒有能力,沒法理解在完成應用的同時還要去滿足一系列安全的要求。如果你開發一個產 品的同時還對你提出一堆安全性的要求。你可能也會這么認為。而且,你如何保證程序員們都是安全測試的專家,而安全測試的專家們又不介入程序開發。
不少網絡安全公司都針對程序員進行一些如跨站攻擊(XSS)的培訓。然而,我們卻發現這樣的漏洞卻越來越多。有些漏洞甚至都存在了 15 年。這樣的培訓往往不成功,因為很多企業并沒有采取正確的開發流程。
程序員要善于安全測試人員與溝通
安全測試專家需要更好地了解應用開發的過程,需要給出程序員能夠理解的明確要求。通過技術和流程來測試應用的質量和安全性以及代碼的質量和安全性。
安全測試人員不要在項目結束后才提出測試要求。對代碼的測試需要按照天為單位,或者在代碼提交后就進行測試。對代碼的缺陷要用程序員能夠理解的方式告訴他們,并對他們如何修改提供具體的指導。
這也就是為什么企業需要在開發開始時就開始讓程序員介入安全測試。程序員們對應用的熟悉程度最高,可以實時地處理發現的安全問題。
采取程序員優先的應用安全的最佳實踐
盡管很多企業還沒有意識到應用安全應該作為 Web 應用的一項重要的要求,也有不少企業已經意識到了。
這些企業理解應用開發過程。他們愿意讓程序員去喝 QA 或者安全人員進行溝通。他們采取了一系列方式來倡導程序員優先的應用安全開發,包括培訓,內部 獎勵(比如對程序員冠以“安全專家”,比如搞一些促進程序員, QA 和安全等不同小組之間合作的活動等等)。而這樣的企業,能夠開發出更好,更加安全的應用。