Security Tomcat虚拟主机防止不正确的输入处理攻击

Security Tomcat虚拟主机防止不正确的输入处理攻击,security,tomcat,tomcat7,Security,Tomcat,Tomcat7,我目前正在尝试修复一个站点漏洞,基本上这是一种“不正确的输入处理”攻击 假设我的网站是www.mywebsite.com 还有黑客的网站www.hacker.com 每当有请求发送到www.mywebsite.com时,修改后的“Host”标题指向www.hacker.com,我的网站将创建一个重定向到www.mywebsite.com的url。 e、 g 正常: Host: www.mywebsite.com GET www.mywebsite.com/get/some/resources

我目前正在尝试修复一个站点漏洞,基本上这是一种“不正确的输入处理”攻击

假设我的网站是www.mywebsite.com 还有黑客的网站www.hacker.com

每当有请求发送到www.mywebsite.com时,修改后的“
Host
”标题指向www.hacker.com,我的网站将创建一个重定向到www.mywebsite.com的url。 e、 g

正常:

Host: www.mywebsite.com 
GET  www.mywebsite.com/get/some/resources/
Reponse 200 ok
黑客:

我的网站运行在Tomcat7上,我尝试了一些解决方案,通过将未知主机指向一个
defaultlocalhost
来设置虚拟主机,该主机假定不起任何作用。但出于某种原因,它仍然发送重定向

此处附上我的
server.xml
主机配置:

<Engine name="Catalina" defaultHost="defaultlocalhost" jvmRoute="jvm1">  
<Host name="www.mywebsite.com"  appBase="webapps"
        unpackWARs="true" autoDeploy="false" deployOnStartup="true">

    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
           prefix="localhost_access_log." suffix=".txt"
           pattern="%h %l %u %t &quot;%r&quot; %s %b" />
  </Host>

  <Host name="defaultlocalhost"  >

  </Host>

那么,我的问题是,我是否在正确的轨道上防止这种攻击?如果是,我做错了什么,仍然无法工作?(最终目标是,如果传入的不是合法主机,则请求应为discard/ignored/return 404,而不是使用302重定向)

先谢谢你

有关此攻击的更多参考信息,请参见此处:


哦,好吧,最后回答我自己的问题

加入Tomcat用户邮件列表后(订阅电子邮件地址:users@tomcat.apache.org). 有个叫安德烈的家伙帮我解决了这个问题:

基本上我做错的是我的
defaultlocalhost

  <Host name="defaultlocalhost" appbase="whatever" >

  </Host>

我使用你的代码,但它总是给我回复200 OK。你可能想发布你的配置,没有更多详细信息,我不能肯定出了什么问题。我们需要做什么来发送403(未授权)响应而不是404(未找到)?
  <Host name="defaultlocalhost" appbase="whatever" >

  </Host>
<Host name="defaultlocalhost" appbase="whatever">
           <!-- deny all remote addresses to this host -->
            <Valve className="org.apache.catalina.valves.RemoteAddrValve"
                    deny="\d+\.\d+\.\d+\.\d+"/>
</Host>