Web應(yīng)用安全十大主動(dòng)安全措施
本文中筆者與大家分享下在WEB應(yīng)用安全方面的一些心得。
1、Content-Security-Policy
Content Security Policy是Mozilla為了提高瀏覽器安全性開發(fā)的一套新的安全機(jī)制,該機(jī)制讓網(wǎng)站可以定義內(nèi)容安全政策,明確告知瀏覽器哪些內(nèi)容是合法的,讓瀏覽器得以避開惡意內(nèi)容。CSP主要鎖定解決XSS及跨站冒名請(qǐng)求(Cross Site Request Forgery)等網(wǎng)絡(luò)應(yīng)用程序漏洞。強(qiáng)烈建議用戶將該告警打開,你可以看到哪些數(shù)據(jù)在干壞事。
在Web上,此策略是通過HTTP頭或meta元素定義的。在Chrome擴(kuò)展系統(tǒng)中,不存在這兩種方式。擴(kuò)展是通過manifest.json文件定義的: { …, “content_security_policy”: “[POLICY STRING GOES HERE]“ … } 關(guān)于CSP語法的詳細(xì)信息,請(qǐng)參考W3C的 Content Security Policy 規(guī)范。
2、設(shè)置X-Frame
所有的現(xiàn)代瀏覽器都支持X-Frame-Options HTTP頭,這個(gè)頭允許頁面被iframe使用時(shí)是否正常渲染。通過使用X-FRAME-OPTIONS偽指令,Web開發(fā)人員可以立即幫助IE8用戶減輕來自各種Web 應(yīng)用程序攻擊的威脅。
使用X-Frame-Options 有兩種可能的值:
DENY :該頁無法顯示在一個(gè)框架中. SAMEORIGHT :頁面只能顯示在頁面本網(wǎng)站的框架中.
換句話說,通過[IFRAME]/[FRAME] 框架加載頁面,如果你指定DENY,不僅會(huì)嘗試加載在一個(gè) 框架頁面失敗,其它網(wǎng)站加載也會(huì)失敗。 另一方面,如果你指定 SAMEOptions ORIGHT, 其它網(wǎng)站加載會(huì)失敗。
3、防止CSRF跨站攻擊
建議在每個(gè)表單驗(yàn)證的地方加上隨機(jī)的token,這樣能夠防止用戶被CSRF攻擊。
4、DAL (data/database access layer)
DALS http://en.wikipedia.org/wiki/Data_access_layer能夠有效的防止SQL注入,但是很少有公司知道如何正確的使用,雖然DALS改造比較復(fù)雜,但是因?yàn)槊恳粋€(gè)單一的數(shù)據(jù)庫調(diào)用需要的修改和插入等操作都在DAL層操作,所以從底層上杜絕的SQL注入的產(chǎn)生。
5、文件系統(tǒng)禁止寫入
正確的設(shè)置CONFIG文件,設(shè)置網(wǎng)站的用戶無法在文件系統(tǒng)上寫入文件。
6、安全日志審計(jì)
日志信息能夠很快的幫助用戶發(fā)現(xiàn)攻擊者的蹤跡,可以通過一些日志分析系統(tǒng)對(duì)IIS、APACHE、NGINX、WINDOWS、LINUX等日志進(jìn)行實(shí)時(shí)的分析,如OSSEC、ZABBIX等,構(gòu)建攻擊特征庫,發(fā)現(xiàn)攻擊行為第一時(shí)間產(chǎn)生告警。
7、加密存儲(chǔ)從之前的CSDN、世紀(jì)佳緣等著名站點(diǎn)被脫褲事件中可以看出,很多站點(diǎn)仍然采用明文的方式存儲(chǔ)用戶密碼,采用一個(gè)過時(shí)的HASH算法,攻擊者可以很輕松的獲取到用戶的相關(guān)信息,而有的站點(diǎn)很多的功能依賴于現(xiàn)有的數(shù)據(jù)庫設(shè)計(jì)和相關(guān)的結(jié)構(gòu)化數(shù)據(jù),導(dǎo)致后期更改用戶的哈希算法非常棘手。
8、SSL、COOKIE設(shè)置HTTPONLY和STS任何一個(gè)網(wǎng)站,如果不支持SSL加密傳輸,非常容易遭受到中間人攻擊。COOKIE沒有設(shè)置HTTPONLY和STS,也非常容易遭受到跨站攻擊。
9、構(gòu)建安全框架構(gòu)建一個(gè)適合企業(yè)自己的安全框架,程序員在寫程序的時(shí)候調(diào)用安全框架,過濾用戶的一切有害輸入,如XSS、SQLI、命令注入等等,可以從一定程度上降低安全風(fēng)險(xiǎn)。
10、設(shè)置autocomplete=off和強(qiáng)密碼AutoComplete控件就是指用戶在文本框輸入前幾個(gè)字母或是漢字的時(shí)候,該控件就能從存放數(shù)據(jù)的文本或是數(shù)據(jù)庫里將所有以這些字母開頭的數(shù)據(jù)提示給用戶,供用戶選擇,提供方便。但是在方便的同時(shí)也可能帶來一定的安全風(fēng)險(xiǎn),攻擊者可能獲取用戶鍵入的一些歷史信息,比如密碼等。