1、jarファイルパッケージをダウンロード
xercesImpl.jar http://xerces.apache.org/mirrors.cgi#binary
batik.jar http://xmlgraphics.apache.org/batik/download.cgi
nekohtml.jar http://sourceforge.net/projects/nekohtml/
2、ポリシーファイルをダウンロード(ポリシーファイルのさまざまなバージョンがあります)
http://central.maven.org/maven2/org/owasp/antisamy/antisamy-sample-configs/
詳細なポリシーファイルhttps://blog.csdn.net/raychiu757374816/article/details/79016101
3、カスタムフィルタ
インポートにjava.io.IOException;
インポートは、javax.servlet.Filter;
輸入れるjavax.servlet.FilterChain。
インポートするjavax.servlet.FilterConfig。
輸入javax.servlet.ServletException;
輸入javax.servlet.ServletRequest;
インポートのjavax.servlet.ServletResponse。
インポートのjavax.servlet.http.HttpServletRequest;
パブリッククラスXssFilterはフィルター{実装
@SuppressWarnings(「未使用」)
私的に、FilterConfigに、FilterConfigを。
公共ボイド){(破壊
this.filterConfig = NULL;
}
公共ボイドのdoFilter(のServletRequest要求たServletResponse応答
れるFilterChain鎖)にIOException、ServletExceptionがを{スロー
chain.doFilter(新しいRequestWrapper((HttpServletRequestの)要求)、応答);
}
公共ボイドのinit(に、FilterConfigに、FilterConfig)はServletExceptionがスロー{
this.filterConfig =に、FilterConfig。
}
}
図4に示すように、要求クラス継承カスタム方法であって、前記のHttpServletRequestWrapperクラス書き換え部
インポートするjava.util.Iterator;
輸入java.util.Map;
インポートのjavax.servlet.http.HttpServletRequest;
輸入javax.servlet.http.HttpServletRequestWrapper。
輸入org.owasp.validator.html.AntiSamy。
輸入org.owasp.validator.html.CleanResults。
輸入org.owasp.validator.html.Policy。
輸入org.owasp.validator.html.PolicyException。
輸入org.owasp.validator.html.ScanException。
パブリッククラスRequestWrapperはHttpServletRequestWrapperクラス延び{
公共RequestWrapper(HttpServletRequestのリクエスト){
スーパー(リクエスト)。
}
@SuppressWarnings({ "rawtypes"、 "未チェック"})
パブリックマップ<文字列、文字列[]> getParameterMap(){
地図<文字列、文字列[]> request_map = super.getParameterMap()。
。イテレータイテレータ= request_map.entrySet()反復子();
ながら(iterator.hasNext()){
(のMap.Entry)=私のMap.Entry iterator.next()。
文字列[]の値=(文字列[])me.getValue();
{ため(; iはvalues.length <I ++は、I = 0 INT)
のSystem.out.println(値[i])とします。
値[I] = xssClean(値[I])。
}
}
戻りrequest_map。
}
@SuppressWarnings({ "rawtypes"、 "未チェック"})
パブリック文字列のgetParameter(文字列名){
文字列V = super.getParameter(名);
もし(V == null)の
リターンはnull;
(V)xssCleanを返します。
}
@SuppressWarnings({ "rawtypes"、 "未チェック"})
パブリック文字列[] getParameterValues(文字列名){
文字列[] V = super.getParameterValues(名);
もし(V == nullの|| v.length == 0)
リターンV;
以下のために(INT i = 0; iはv.length <; iは++){
Vの[I] = xssClean(V [I])。
}
戻りV。
}
プライベート文字列xssClean(文字列値){
AntiSamy antiSamy =新しいAntiSamy()。
試す{
ポリシーポリシーは= Policy.getInstanceの( "/ antisamy-slashdot.xml");
最終CleanResults CR = antiSamy.scan(値、ポリシー)。
cr.getCleanHTMLを返します();
}キャッチ(ScanException電子){
e.printStackTrace();
}キャッチ(PolicyException電子){
e.printStackTrace();
}
戻り値。
}
}
図5に示すように、コンフィギュレーション・インターセプタは、要求処理要求パラメータをインターセプト
<フィルター>
<フィルタ名> XSSFilter </フィルタ名>
<フィルタクラス> org.jeecgframework.core.filter.XssFilter </フィルタリングクラス>
</フィルタ>
<フィルタマッピング>
<フィルタ名> XSSFilter </フィルタ名>
の<url-pattern> / * </のurl-pattern>
</のfilter-mapping>
完全紹介。