增強的輸入驗證
就頻繁發(fā)生的Web安全問題而言,有些是源于對Web設(shè)計模型的誤解,有些則來自于程序師認(rèn)為瀏覽器是可信的。很多WEB程序員用JavaScript在瀏覽器上實現(xiàn)輸入驗證。而瀏覽器只是一個用戶控制的簡單工具,因此攻擊者可以非常容易地繞過輸入驗證,直接將惡意代碼輸入到WEB應(yīng)用服務(wù)器。
有一個解決上述問題的正確方法,就是在服務(wù)端進(jìn)行輸入驗證。如果這個方法不能實現(xiàn),還可以通過在客戶和應(yīng)用服務(wù)器之間增加代理,讓代理去執(zhí)行Web頁面上嵌入的JavaScript,實現(xiàn)輸入驗證。
消極的安全模型vs.積極的安全模型
曾經(jīng)設(shè)置過防火墻規(guī)則的人,可能會碰到這樣的建議:允許已知安全的流量,拒絕其他一切訪問。這就是一種很好的積極安全模型。恰恰相反,消極安全模型則是默認(rèn)允許一切訪問,只拒絕一些已知危險的流量模式。
每種安全模型方式都存在各自的問題:
消極安全模型:什么是危險的?
積極安全模型:什么是安全的?
消極安全模式通常使用的更多。識別出一種危險的模式并且配置自己的系統(tǒng)禁止它。這個操作簡單而有趣,卻不十分安全。它依賴于人們對于危險的認(rèn)識,如果問題存在,卻沒有被意識到(這種情況很常見),就會為攻擊者留下可趁之機。
積極安全模式(又稱為白名單模式)看上去是一種制定策略的更好方式,非常適于配置防火墻策略。在Web應(yīng)用安全領(lǐng)域中,積極安全模式通常被概括成對應(yīng)用中的每一個腳本的枚舉。對枚舉的每一個腳本,需要建立一個相應(yīng)列表,表中內(nèi)容如下所示:
◆允許的請求方式(比如,GET/POST或者只POST)
◆允許的Content-Type
◆允許的Content-Length
◆允許的參數(shù)
◆指定參數(shù)和可選參數(shù)
◆參數(shù)類型(比如,文本或整數(shù))
◆附加參數(shù)限制
上述列表僅僅是個例子,實際的積極安全模式通常包括更多的要素。它試圖從外部完成程序員本應(yīng)從內(nèi)部完成的工作:為提交到Web應(yīng)用的信息驗證每一個比特。如果肯花時間的話,使用積極安全模式就是一個比較好的選擇。這個模式的難點之一,在于應(yīng)用模式會隨著應(yīng)用的發(fā)展而改變。每當(dāng)應(yīng)用中添加新腳本或更改舊腳本,就需要更新模式。但是,它適用于保護(hù)那些穩(wěn)定的、無人維護(hù)的舊應(yīng)用。
自動開發(fā)策略可以解決以上問題:
◆一些WAF能夠監(jiān)視流量,并根據(jù)這些流量數(shù)據(jù)自動配置策略,有些產(chǎn)品可以實時進(jìn)行這樣的工作。
◆通過白名單,可以標(biāo)識特定的IP地址是可信的,然后,依據(jù)觀察的流量,配置WAF,更新安全策略。
◆如果通過一個全面的衰減測試,(仿真正確的行為)來創(chuàng)建一個應(yīng)用,并且在WAF處于監(jiān)控狀態(tài)時執(zhí)行測試,那么WAF可以自動生成策略。
可見,沒有哪個模式是完全令人滿意的。消極安全模式適用于處理已知問題,而積極安全模式則適用于穩(wěn)定的Web應(yīng)用。理想的做法是,在現(xiàn)實生活中,將二者結(jié)合使用,取長補短。
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |