我正在尝试获取我的 web 服务应用程序的服务器详细信息
<tr>
<td style="text-align: right">Remote Host Name:</td>
<td><%= request.getRemoteHost() + ":" + request.getRemotePort()%></td>
</tr>
我最近运行了 veracode,但我遇到了getRemoteHost()
关于如何防止它的任何建议的问题?
这可能意味着如果有一个名为 < script > ... 的主机,您的函数只是天真地回应它。
您应该通过只允许主机名中的有效字符来过滤输出。或者只是在回显之前对其进行 html 编码。
作为一般规则,您必须验证来自不受信任来源的所有输入,例如用户输入。
通常环境变量和 http 标头被视为安全的,但随意更改它们相对容易。
问问自己主机名信息来自哪里。如果它是您的 dns 服务器,那么攻击者不太可能使用这种伪造的主机名污染它的缓存。如果信息来自 http 标头,那将非常容易。
您可以使用来解决:例如<c:out value=request.getRemoteHost() />