【问题标题】:jetty, servlet 3.0, spring host header attack preventionjetty、servlet 3.0、spring host header 攻击防范
【发布时间】:2014-06-04 13:45:35
【问题描述】:

有一种已知的攻击类型称为主机头攻击脚本。它基本上是在更改“X-Forwarded-Host”标头以及您所做的所有调用:

String serverName = reqest.getServerName();

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

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

您可能指的是另一个位置。

尽管存在恶意 X-Forwarded-Host 标头,还有其他方法可以正确检索服务器名称吗?

所有这些都可以通过只提供相对网址而不是完整网址来克服。我现在面临的情况包括嵌入一些从 https 到 http 的完整 url,因此我不能使用相对 url。

有什么想法吗?

【问题讨论】:

    标签: java spring jetty servlet-3.0 dropwizard


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2020-09-23
      • 2011-02-16
      • 2012-04-10
      • 1970-01-01
      • 1970-01-01
      • 2014-09-14
      • 2021-12-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多