Http头Hostname攻击漏洞?
其实HTTP请求头中的HostName漏洞攻击很早就存在了,但无论是运维还是开发人员对这个漏洞了解不深,也不够重视,一般情况下,此漏洞危害并不大。
HTTP头信息HostName漏洞分析在说这个漏洞之前我们先简单说下HTTP协议,我们在发起HTTP请求时,其请求报文由下面几分部组成:
请求行
请求头(Header)
空行
请求体(请求数据)
其中,请求头的作用就是通知服务器有关客户端请求的信息,它是由关键字/值对组成的,常用请求头参数有:
User-Agent:标记请求的浏览器类型
Accept:告诉服务器端客户端可识别的文件类型有哪些
Host:告诉服务器端客户端请求的主机名是什么
一个最简单的请求报文可能是这样的:
GET / HTTP/1.1Host: http://www.wukong.com请求头中的Host本意告诉服务器端要访问的是哪个域名(因为一台服务器上可能会建立多个站点、使用多个域名),但服务器端的代码有时也需要获取这个Host(比如拼装URL),在这种情况下就存在漏洞了,因为我们不能保证客户端发送过来的Host头信息就一定是合法的。
HostName漏洞防御方案HostName漏洞防御是比较容易的,主要有两种方法:
1、程序代码中若必须获取HostName请求头,那一定要做必要的数据检查,防止拼接字符串输出后产生XSS等。
2、Web站点显式绑定域名,避免空主机头的存在
当多个站点部署在同一台服务器上时,因为服务器IP可能只有一个,而网站端口也都是80,那服务器怎么知道你访问的是哪一个网站呢?靠的就是请求头中的HostName,所以我们将站点显式绑定域名,防止通过IP的方式可以访问某个网站,这样伪造的HostName是找不到对应站点的,也就不存在漏洞了。
以上就是我的观点,对于这个问题大家是怎么看待的呢?欢迎在下方评论区交流 ~ 我是科技领域创作者,十年互联网从业经验,欢迎关注我了解更多科技知识!