【发布时间】: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