如何在Spring中为xss过滤@PathParam?
实际上,在xss保护的情况下,我需要过滤此输入:
XSSFilter已完成并正在运行,但是如何将其与URL参数结合起来?
答案 0 :(得分:0)
这是我的解决方法:
ContainerRequestContext request;
//clean request body
if(request.getMethod().equals(HttpMethod.PUT) || request.getMethod().equals(HttpMethod.POST) || request.getMethod().equals(HttpMethod.DELETE)) {
StringWriter writer = new StringWriter();
IOUtils.copy(request.getEntityStream(), writer, Charset.forName("UTF-8"));
request.setEntityStream(IOUtils.toInputStream(stripXSS(writer.toString())));
}
//clean request path params
String cleanRawPath = stripXSS(request.getUriInfo().getRequestUri().getRawPath());
//clean request query params
String cleanRawQuery = stripXSS(request.getUriInfo().getRequestUri().getRawQuery());
//clean headers
//cleanHeaders(request.getHeaders());
private void cleanHeaders( MultivaluedMap<String, String> headers )
{
for( Map.Entry<String, List<String>> header : headers.entrySet() )
{
String key = header.getKey();
List<String> values = header.getValue();
List<String> cleanValues = new ArrayList<String>();
for( String value : values ) {
cleanValues.add( stripXSS( value ) );
}
headers.put( key, cleanValues );
}
}
//clean cookies
//cleanCookies(request.getCookies());
private void cleanCookies( Map<String, Cookie> cookies )
{
for( Map.Entry<String, Cookie> cookie : cookies.entrySet() )
{
String key = cookie.getKey();
Cookie value = cookie.getValue();
cookies.put( key, new Cookie(key, stripXSS(value.getValue())));
}
}