0
私は、次のフィルタ従っています:すでにキャッチされた例外をキャッチするにはどうすればよいですか?
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
ServletException {
try {
chain.doFilter(new XSSRequestWrapper((HttpServletRequest) request), response);
} catch (XssAttackException e) {
request.getRequestDispatcher("/XssAttack").forward(request, response);
}
}
とクラスXssAttackException
は次のとおりです。コードをデバッグした後
public class XssAttackException extends RuntimeException {
private static final long serialVersionUID = 1L;
}
を、私はどこかで春の枠組みの中ですべての例外がキャッチされていることに気づきました。今私はキャッチボックも走る方法が必要です。 XSSRequestWrapper
内部
UPDATE
我々は持っている:
@Override
public String getHeader(String name) {
String value = super.getHeader(name);
return stripXSS(value);
}
そして
private String stripXSS(String value) {
if (value != null) {
value = persianUtf8(value);
if (!value.equals(Jsoup.parse(value).text())) {
throw new XssAttackException();
}
value = Jsoup.parse(value).text();
for (Pattern scriptPattern : patterns) {
if (scriptPattern.matcher(value).matches()) {
throw new XssAttackException();
}
value = scriptPattern.matcher(value).replaceAll("");
}
}
return value;
}
どこか?おそらく例外が以前のフィルタを投げているのでしょうか? – Leo
ここでXssAttackExceptionはどこから来ますか?完全修飾クラス名とjarファイルは何ですか?私は春にそのクラスを見つけることができません。 –
@Leoいいえ私のデバッグは、それがXssAttackExceptionの正確なクラスであることを示しています – Khodabakhsh