事先聲明:只是淺談,我也之用了這個組件的一點點。
又到某重要XX時期(但願此文給面臨此需求的同仁有所幫助),某Web應用第一次面臨安全加固要求,AppScan的安全測試報告還是很清爽的,內容全面,提示建議到位,而且是中午哦,當然有的中文明顯狗屁不通。
之前此應用的后端架構相對比較穩固,所以出的重要問題主要出在靠近前端方向的問題,一些類似輸出過濾這樣的動作做的不到位,需要引入比較成熟的代碼專門干這些活,翻了一下吳瀚清的同學《白帽子談Web安全》推薦了OWASP的ESAPI,這個東西全面叫Enterprise Security API,官網地址:https://www.owasp.org/index.php/Category:OWASP_Enterprise_Security_API 到其主頁上看看,好像提供了不少語言的分支版本,我就下了個JavaEE的版本,這個玩意功能很強大,直接來官方文檔的特性列表吧:
- The features in this release of ESAPI for Java EE include:
- ESAPI Core components
- ESAPI locator and interface classes.
- ESAPI security control reference implementations for the following security controls:
- Authentication
- Identity
- Access Control
- Input Validation
- Output Escaping
- Encryption
- Random Numbers
- Exception Handling
- Logging
- Intrusion Detection
- Security Configuration
- ESAPI Web Application Firewall (WAF) component
- 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輸出過濾大都是一些人(其實就一個版本)自己寫的代碼,不是說他的代碼不好,引入相對成熟經過一定使用檢驗的組件級代碼總是相對更好一點,再怎么說,這些東西都是安全相關的東東,不可小視。