安全是Web應用程序不容忽視的一個重要因素,而在Web應用開發(fā)中,一些開發(fā)者由于缺乏安全方面的意識,導致Web應用存在風險。下面來介紹Web開發(fā)中常見的一些安全誤區(qū)。
1、如果我們使用Web框架,那么不必擔心安全問題
一些流行的框架比如Rails和 Django在編寫之初已考慮到安全性問題,并幫助防止常見的漏洞問題。然而,它們并不能阻止業(yè)務邏輯出現(xiàn)的陷,比如設(shè)置產(chǎn)品數(shù)量為負數(shù),這就可能給攻擊者提供了機會。如果你以非常規(guī)的方式使用該框架,它們會努力去保護你,此外,許多安全功能需要由開發(fā)者手動實現(xiàn)。
2、我不是很有趣,沒人想要攻擊我
即便你的公司或應用不是很有價值,訪問者或者黑客也可能會攻擊您的網(wǎng)站。如果你的網(wǎng)站能夠被搜索引擎檢索到,并且還有常見的漏洞,那么你的網(wǎng)站已不安全了,已經(jīng)被攻擊了。
比如,2008年,有一連串的自動ASPROX 蠕蟲利用網(wǎng)站SQL注入漏洞,以致用戶的電腦受到多個惡意腳本的攻擊,直到今天仍然有許多網(wǎng)站受到影響。
3、我們已經(jīng)有了備份,因此無后顧之憂
盡管網(wǎng)站被攻擊后,備份可以幫助你恢復,但它絕不是一個網(wǎng)站安全性良好的、可行性的替代方案。
遭到黑客臨時被攻擊的網(wǎng)站可能會導致嚴重的后果,比如,被搜索引擎列入黑名單,敏感的用戶數(shù)據(jù)被盜,網(wǎng)絡(luò)釣魚或蠕蟲攻擊你的訪客。此外,即使你把網(wǎng)站備份了,也不能保證其不會再發(fā)生了。
4、它是一個內(nèi)部網(wǎng)絡(luò),所以,安全并不重要
你永遠也不能確保威脅不會來自某個雇員或者攻擊者以某種方法來獲得訪問內(nèi)部網(wǎng)絡(luò)。
比如,公司內(nèi)部的CRM或ERP的機密數(shù)據(jù)被心懷不滿的初級員工或者因好奇心缺乏安全意識的員工、臨時工因缺乏工作安全性而泄露?攻擊者通過你的無線網(wǎng)或者互聯(lián)網(wǎng)連接而獲取網(wǎng)絡(luò)訪問?等等這些都會對你造成潛在威脅。
5、它是安全的,因為通過VPN連接
盡管用戶使用安全的網(wǎng)絡(luò)連接到你的應用程序,但這并不意味著你的應用程序本身就是安全的。正如我們第四條談到的內(nèi)部網(wǎng)絡(luò)(惡意員工和網(wǎng)絡(luò)漏洞)。
6、網(wǎng)站使用SSL,因此,它很安全
如果你的網(wǎng)站使用SSL,它會在你的網(wǎng)站和訪問者瀏覽器之間傳輸加密數(shù)據(jù),盡管它能防止他人攔截未加密的數(shù)據(jù),但SSL卻無法阻止攻擊者利用漏洞來訪問你的網(wǎng)站。
7、我想防火墻可以做到!
防火墻實施了一套規(guī)則能夠控制訪問者的IP地址或端口,但卻無法阻止訪問者利用漏洞訪問你的網(wǎng)站。應用防火墻的作用是在HTTP請求級別上但不會查看請求的內(nèi)容。當正確配置后,防火墻可以幫助減少特定的攻擊,比如跨站點腳本或者SQL注入,但不會確保你免受攻擊,無法解決根本性問題。更重要的是,黑客會采取很多方法來繞過Web應用防火墻。
8、我們做了滲透測試和源代碼分析,因此不需要擔心!
滲透測試和源代碼分析是編寫安全Web應用程序的基本組成部分,但它卻不能“包治百病”。重要的是,你不能保證所有的漏洞都能被檢測到,因此你需要確保編寫安全代碼。更重要的是,修復Bug是如此的昂貴,漏洞亦如此,你應該在滲透測試階段盡可能多地查找漏洞。
9、熱門書籍可以教你如何編寫安全代碼
截止到目前,你幾乎不可能找到有關(guān)編寫安全代碼方面的編程書籍。開發(fā)者利用這些書籍學會Web應用開發(fā),但卻無法做到編寫安全的Web應用,除非他們已經(jīng)經(jīng)歷某個應用被黑客攻擊或者其在Web安全方面感興趣。