2

我正在尝试获取我的 web 服务应用程序的服务器详细信息

<tr>
 <td style="text-align: right">Remote Host Name:</td>
 <td><%= request.getRemoteHost() + ":" + request.getRemotePort()%></td>
</tr>

我最近运行了 veracode,但我遇到了getRemoteHost()关于如何防止它的任何建议的问题?

4

2 回答 2

1

这可能意味着如果有一个名为 < script > ... 的主机,您的函数只是天真地回应它。

您应该通过只允许主机名中的有效字符来过滤输出。或者只是在回显之前对其进行 html 编码。

作为一般规则,您必须验证来自不受信任来源的所有输入,例如用户输入。

通常环境变量和 http 标头被视为安全的,但随意更改它们相对容易。

问问自己主机名信息来自哪里。如果它是您的 dns 服务器,那么攻击者不太可能使用这种伪造的主机名污染它的缓存。如果信息来自 http 标头,那将非常容易。

于 2014-08-08T03:30:13.857 回答
1

您可以使用来解决:例如<c:out value=request.getRemoteHost() />

于 2017-06-29T11:02:47.783 回答