jetty,servlet 3.0,弹簧主机头攻击预防

时间:2014-06-04 13:45:36

标签: java spring jetty servlet-3.0 dropwizard

有一种称为主机头攻击脚本的已知攻击类型。它基本上改变了“ X-Forwarded-Host ”标题以及你做的所有通话:

String serverName = reqest.getServerName();

导致使serverName正好是X-Forwarded-Host标头值。因此,基于serverName变量的所有操作都是不可信的。如果您正在将网址嵌入到您的网站中,例如:

<a href="http://<%=request.getServerName()+":"+request.getServerPort()%>">Some link</a>

您可能会引用其他位置。

是否存在另一种方法来正确检索服务器名称,尽管存在恶意的X-Forwarded-Host标头?

所有这些都是通过仅提供相对网址而不是完整网址来克服的。我现在面临的案例包括将一些完整的URL从https嵌入到http中,因此我无法使用相对URL。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我认为你可以禁用转发功能。这可以在 AbstractConnector 中完成,有一个名为 setForwarded 的方法。

同时,如果您使用dropwizard,只需编辑您的yml文件并更改http config中的 useForwardedHeaders 字段,这非常简单。 (在0.6.2中)