当前位置: 首页 > 知识库问答 >
问题:

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

艾弘义
2023-03-14

以下是脆弱性测试收到的其余回复

回答

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 ");
.....
}

共有1个答案

容俊豪
2023-03-14

如果我知道你需要什么,可以通过过滤器来实现。

筛选器可用于修改任何请求或响应参数,如标头。

下面的过滤器实现了容器响应过滤器接口,它将把X-XSS-保护头添加到HTTP响应中:

@Provider
public class XssResponseFilter implements ContainerResponseFilter {

    @Override
    public void filter(ContainerRequestContext requestContext, 
                      ContainerResponseContext responseContext) throws IOException {

        responseContext.getHeaders().add("X-XSS-Protection", "1; mode=block");
    }
}

请注意,上面的过滤器是全局的,也就是说,它将对所有资源方法执行。

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

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

可以使用@NameBding注释将筛选器分配给资源方法。该注释用作其他html" target="_blank">用户实现的注释的元注释,这些注释应用于提供程序和资源方法。

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

@NameBinding
@Retention(RUNTIME)
@Target({TYPE, METHOD})
public @interface XssProtection { }

将上面定义的注释放置在过滤器类上:

@Provider
@XssProtection
public class XssResponseFilter implements ContainerResponseFilter {
    ...
}

要将筛选器分配给资源方法,请在资源方法上放置上述定义的注释:

@GET
@XssProtection
@Produces(MediaType.APPLICATION_JSON)
public Response myMethod() {
    ...
}

名称绑定也可以应用于资源类。这意味着过滤器将对该资源类的所有资源方法执行:

@Path("/foo")
@XssProtection
public class MyResource() {
    ...
}

请注意,全局过滤器总是被执行的,所以即使对于具有任何名称绑定注释的资源方法也是如此。

有关过滤器的更多详细信息,请参阅Jersey文档。

 类似资料:
  • 随着互联网技术的发展,现在的Web应用都含有大量的动态内容以提高用户体验。所谓动态内容,就是应用程序能够根据用户环境和用户请求,输出相应的内容。动态站点会受到一种名为“跨站脚本攻击”(Cross Site Scripting, 安全专家们通常将其缩写成 XSS)的威胁,而静态站点则完全不受其影响。 什么是XSS XSS攻击:跨站脚本攻击(Cross-Site Scripting),为了不和层叠样式

  • 问题内容: 如何保护我们的Web应用程序免受XSS攻击?如果一个应用程序不进行任何特殊字符转换,就很容易受到攻击。 问题答案: 您应该先将所有输入转回HTML,然后再将其输出回给用户。一些参考: OWASP XSS(跨站点脚本)预防备忘单 考虑从Apache Commons Lang使用 或从Spring使用 JSP / Servlet Web应用程序中的XSS预防

  • 本文向大家介绍什么是 XSS 攻击,如何避免?相关面试题,主要包含被问及什么是 XSS 攻击,如何避免?时的应答技巧和注意事项,需要的朋友参考一下 XSS 攻击:即跨站脚本攻击,它是 Web 程序中常见的漏洞。原理是攻击者往 Web 页面里插入恶意的脚本代码(css 代码、Javascript 代码等),当用户浏览该页面时,嵌入其中的脚本代码会被执行,从而达到恶意攻击用户的目的,如盗取用户 coo

  • xss(Cross Site Scripting),即跨站脚本攻击,是一种常见于web应用程序中的计算机安全漏洞。指的是在用户浏览器上,在渲染DOM树的时候,执行了不可预期的JS脚本,从而发生了安全问题。 XSS就是通过在用户端注入恶意的可运行脚本,若服务端对用户的输入不进行处理,直接将用户的输入输出到浏览器,然后浏览器将会执行用户注入的脚本。 所以XSS攻击的核心就是浏览器渲染DOM的时候将文本

  • 问题内容: 这是我的代码: 有人可以告诉我它是否安全或是否容易受到SQL Injection攻击或其他SQL攻击吗? 问题答案: 有人可以告诉我它是否安全或是否容易受到SQL Injection攻击或其他SQL攻击吗? 正如uri2x所说的,请参阅SQL注入。 防止SQL注入的最佳方法是使用准备好的语句。它们将数据(您的参数)与指令(SQL查询字符串)分开,并且不会为数据留下任何空间污染查询的结构

  • 这是我的代码: 有人可以告诉我它是否安全,或者它是否容易受到SQL注入攻击或其他SQL攻击吗?