1. 程式人生 > >從JavaWeb危險字符過濾淺談ESAPI使用

從JavaWeb危險字符過濾淺談ESAPI使用

ava numbers cati 同學 owin 軟件 implement input div

事先聲明:只是淺談,我也之用了這個組件的一點點。

又到某重要XX時期(但願此文給面臨此需求的同仁有所幫助),某Web應用第一次面臨安全加固要求,AppScan的安全測試報告還是很清爽的,內容全面,提示建議到位,而且是中午哦,當然有的中文明顯狗屁不通。

之前此應用的後端架構相對比較穩固,所以出的重要問題主要出在靠近前端方向的問題,一些類似輸出過濾這樣的動作做的不到位,需要引入比較成熟的代碼專門幹這些活,翻了一下吳瀚清的同學《白帽子談Web安全》推薦了OWASP的ESAPI,這個東西全面叫Enterprise Security API,官網地址:https://www.owasp.org/index.php/Category:OWASP_Enterprise_Security_API 到其主頁上看看,好像提供了不少語言的分支版本,我就下了個JavaEE的版本,這個玩意功能很強大,直接來官方文檔的特性列表吧:

  1. The features in this release of ESAPI for Java EE include:
  2. ESAPI Core components
  3. ESAPI locator and interface classes.
  4. ESAPI security control reference implementations for the following security controls:
  5. Authentication
  6. Identity
  7. Access Control
  8. Input Validation
  9. Output Escaping
  10. Encryption
  11. Random Numbers
  12. Exception Handling
  13. Logging
  14. Intrusion Detection
  15. Security Configuration
  16. ESAPI Web Application Firewall (WAF) component
  17. Fixes for specific issues. For more information, see “Enhancements and Resolved Issues”.

這個組件使用不是直接引入jar就ok,初始化時要讀兩個配置文件ESAPI.properties和validation.properties,這兩個配置文件不一定能在安裝指南所示的目錄中找到,不過你解壓搜索一下dist目錄,應該是可以找到的,把這兩個文件扔進src目錄中就Ok了。

再有什麽可說的,來代碼,我就用了一下DefaultEncoder中的一些EncodeForXXX功能,基本上都是getInstance()單例方式一句搞定,也沒啥好說的,大家看看文檔誰都會。那寫這Blog幹什麽?主要想說現在中文網上搜到的關於JavaWeb輸出過濾大都是一些人(其實就一個版本)自己寫的代碼,不是說他的代碼不好,引入相對成熟經過一定使用檢驗的組件級代碼總是相對更好一點,再怎麽說,這些東西都是安全相關的東東,不可小視。

從JavaWeb危險字符過濾淺談ESAPI使用