Web项目中host头攻击漏洞

===============
Web项目在通过绿盟软件扫描的时候,提示“检测到目标URL存在http host头攻击漏洞”。漏洞的本意是,HTTP请求带了HOST头,WEB取了该HOST头作进一步动作,例如拼接URL。如果这个HOST是黑客非法伪造的,比如evil.com,那么拼接之后的URL就可能是http://evil.com/key=?value=,从而导致己方网站信息的泄露。解决方法如下:
设置一个过滤器,使用白名单对每次访问网站的HOST进行过滤。即当访问时,获取访问的Host,并与白名单中的信息进行比对,如果在白名单中有匹配的Host,则正常访问,否则,拒绝访问。

package ...
public class ExampleFilter implements Filter {

    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest hreq = (HttpServletRequest) request;
        HttpServletResponse hres = (HttpServletResponse) response;
        //取请求Host
        String hostinfo = hreq.getHeader("header").trim();
        //读取白名单
        String[] whiteHostList = getWhiteList();
        //进行比对
        for(String whiteHost : whiteHostList) {
            if(whiteHost.equals(hostinfo)) {
                //说明访问者在白名单中
                chain.doFilter(request,response);
            } else {
                setMessage("非法Host访问,访问无效!");
                return;
            }
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值