Java jersey的header param注释可以用来避免XSS攻击吗?

Java jersey的header param注释可以用来避免XSS攻击吗?,java,web-services,rest,xss,cross-site,Java,Web Services,Rest,Xss,Cross Site,以下是在漏洞测试中收到的rest响应 响应 HTTP/1.1400错误请求 HTTP标头字段“Accept”的值为 "/'"!@$^*/:;.,?{}[]`~-_ 我可以做一些事情,比如添加一个header参数来避免XSS攻击吗 @Path("/WSPointBalance") public class BalanceService { private static final Logger log = Logger.getLogger(balanceManager.class); @POST

以下是在漏洞测试中收到的rest响应

响应

HTTP/1.1400错误请求

HTTP标头字段“Accept”的值为 "/'"!@$^*/:;.,?{}[]`~-_ 我可以做一些事情,比如添加一个header参数来避免XSS攻击吗

@Path("/WSPointBalance")
public class BalanceService {
private static final Logger log = Logger.getLogger(balanceManager.class);
@POST
@Path("/getPointBalance")
@Produces("application/json; charset=utf-8")
@HeaderParam("X-XSS-Protection: 1; mode=block")
public String getPointBalance(@QueryParam("P_ID")String P_ID) {

    if (log.isDebugEnabled())
        log.debug("In balanceManager ");
    log.info("Looging inside BalanceService class ");
.....
}
响应滤波器 如果我了解您需要什么,可以通过过滤器实现

过滤器可用于修改任何请求或响应参数,如标题

实现该接口的以下过滤器将把
X-XSS-Protection
头添加到HTTP响应中:

@Provider
公共类XssResponseFilter实现ContainerResponseFilter{
@凌驾
公共无效筛选器(ContainerRequestContext requestContext,
ContainerResponseContext(responseContext)引发IOException{
responseContext.getHeaders().add(“X-XSS-Protection”,“1;mode=block”);
}
}
请注意,上面的过滤器是全局的,也就是说,它将对所有资源方法执行

名称绑定 要仅对一些手工挑选的资源方法执行筛选器,可以使用名称绑定

名称绑定是一个概念,它允许对JAX-RS运行时说,特定的过滤器将只针对特定的资源方法执行。当筛选器或拦截器仅限于特定的资源方法时,我们称其为名称绑定

可以使用注释将筛选器分配给资源方法。该注释用作应用于提供者和资源方法的其他用户实现的注释的元注释

名称绑定注释可以定义如下(注释的名称由您决定):

@NameBinding
@保留(运行时)
@目标({TYPE,METHOD})
public@interface XssProtection{}
将上述定义的注释放置在过滤器类上:

@Provider
@XSP保护
公共类XssResponseFilter实现ContainerResponseFilter{
...
}
要将筛选器分配给资源方法,请在资源方法上放置上述定义的注释:

@GET
@XSP保护
@产生(MediaType.APPLICATION_JSON)
公众回应方法(){
...
}
名称绑定也可以应用于资源类。这意味着将对该资源类的所有资源方法执行筛选器:

@Path(“/foo”)
@XSP保护
公共类MyResource(){
...
}
请注意,全局筛选器总是执行的,因此即使对于具有任何名称绑定注释的资源方法也是如此

额外资源
有关过滤器的更多详细信息,请查看Jersey。

非常感谢Cássio Mazzochi Molin。非常感谢@Cássio Mazzochi Molin。我想了解一件关于REST服务环境下的跨站点脚本的事情,对REST服务的任何XSS攻击都将通过URI进行,对吗??我的理解正确吗?@sritharan你在用球衣吗?你为什么不试试这个?源是可用的,以防万一你需要检查或实现你的。@ SRITHARAN也考虑支持CORS。有一个很好的例子。