WEB安全漏洞之Host头攻击漏洞

总览

    • 漏洞说明
    • 解决方法

漏洞说明

开发人员一般依赖于HTTP Host header来方便的获得网站域名。例如,在php里用_SERVER[“HTTP_HOST”],在java里使用hreq.getHeader(“HOST”)等。但是这个header是不可信赖的,在请求传入后端的途中可能会被截获修改。如果后端没有对host header值进行处理(检验等),就有可能造成恶意代码的传入,或者己方用户信息的泄露(get拼接URL传输数据)。简单说:就是HTTP Host header可能在攻击中被篡改,依赖request的方法是不可靠的,例如request.getContextPath()等。

解决方法

可以通过一个过滤器对所有传入后端的请求进行拦截,然后校验hreq.getHeader(“HOST”)。例如,可以增加一个白名单配置项,在过滤器拦截到请求后,获取Host头,应该是ip:port的形式,然后读取白名单中配置的安全host头,将其与获取的请求host头进行比较,如果请求host头不在白名单内,就认为请求在传输过程中被篡改了,则拒绝继续访问。通过这种方式,能修复Host头攻击漏洞。

你可能感兴趣的:(WEB安全漏洞)