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