gpt4 book ai didi

java - 如何更改 Jersey 创建的错误消息?

转载 作者:搜寻专家 更新时间:2023-11-01 03:26:27 24 4
gpt4 key购买 nike

我有一个通过我们公司网站漏洞工具运行的 Jersey 应用程序。它带着一个非常奇怪的漏洞回来了。如果您发送此 header :

"*/*'"!@$^*\/:;.,?{}[]`~-_<sCrIpT>alert(81363)</sCrIpT>"

您从 Jersey 的 BODY 中收到一条错误消息:

The HTTP header field "Accept" with value "*/*'"!@$^*\/:;.,?{}[]`~-_<sCrIpT>alert(56224)</sCrIpT>" could not be parsed.

我们的安全团队不能接受这种情况。它确实以“text/plain”的形式返回,这是正确的,但我需要更改消息。有什么办法吗?

这是在 Tomcat 上运行的,我使用的是 Jersey 1.14。

最佳答案

这是来自 Jersey 团队的 Pavel:

您应该能够从您的 servlet 过滤器中清除该实体,或者您可以在 Jersey 中注册 ContainerResponseFilter,例如:

public class PurgeErrorEntityResponseFilter implements ContainerResponseFilter {
@Override
public ContainerResponse filter(ContainerRequest request, ContainerResponse response) {
if(response.getStatus() == 400) {
response.setEntity(null);
}
return response;
}
}

和 web.xml:

 <init-param>
<param-name>com.sun.jersey.spi.container.ContainerResponseFilters</param-name>
<param-value>x.y.z.PurgeErrorEntityResponseFilter</param-value>
</init-param>

这对我有用。我这样做了:

response.setEntity(StringEscapeUtils.escapeHtml(response.getEntity().toString()));

它转义了错误信息。谢谢帕维尔!

关于java - 如何更改 Jersey 创建的错误消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12730078/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com