操作@FormParam以消毒XSS值

时间:2016-10-06 09:20:45

标签: java jersey

我在使用Jersey 1.0.3的旧项目中使用来自@FormParam的{​​{1}}。有没有办法添加一个过滤器来清理和更改我在应用程序中使用的所有jsr311-api-1.0.jar

示例代码如下:

@FormParam

1 个答案:

答案 0 :(得分:0)

由于JAX-RS 1.0 APIJSR 311)不提供过滤器或拦截器,您可以考虑清理资源方法中的输入。

为此,您可以考虑jsoup。以下是文档提供的示例:

String unsafe = 
  "<p><a href='http://example.com/' onclick='stealCookies()'>Link</a></p>";
String safe = Jsoup.clean(unsafe, Whitelist.basic());

OWASP Java HTML Sanitizer也可以做到这一点。以下是文档提供的示例:

PolicyFactory policy = new HtmlPolicyBuilder()
    .allowElements("a")
    .allowUrlProtocols("https")
    .allowAttributes("href").onElements("a")
    .requireRelNofollowOnLinks()
    .toFactory();
String safeHTML = policy.sanitize(untrustedHTML);

如果您愿意使用Jersey API,那么值得一提的是Jersey 1.x提供了您可以实现的ContainerRequestFilter接口并修改了请求的状态。