URL存在http host头攻击漏洞的解决办法

2023/06/20 安全 共 761 字,约 3 分钟

项目中遇到http host头攻击的解决办法,支持nginx,apache 两种办法。

以下是漏洞的一些内容:

安全漏洞描述

为了方便的获得网站域名,开发人员一般依赖于HTTP Host header。例如,在php里用_SERVER[“HTTP_HOST”]。 但是这个header是不可信赖的,如果应用程序没有对host header值进行处理,就有可能造成恶意代码的传入。

http-host-attack

风险等级:高

解决办法

web应用程序应该使用SERVER_NAME而不是host header。 在Apache和Nginx里可以通过设置一个虚拟机来记录所有的非法host header。
在Nginx里还可以通过指定一个SERVER_NAME名单,Apache也可以通过指定一个SERVER_NAME名单并开启UseCanonicalName选项。

本质上就是在服务侧鉴定请求来源, 非法来源直接过滤掉。

nginx 解决方案

打开nginx的网站配置文件,一般为 /etc/nginx/conf.d/xxx.conf
添加如下配置

server {
    listen       80;
    server_name  127.0.0.1;
    # 防止http host 攻击的配置: 仅允许 指定域名访问,其他域名返回403
    if ($http_Host !~* ^domain.com|127.0.0.1:80$) {
        return 403;
    }
    # 其他配置
}

重启nginx即可

nginx -s reload

Apache解决方案

打开Apache的配置 , 一般为 /conf/httpd.conf
添加如下配置:

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC]
RewriteRule ^(.*)$ /403.html

重启apache即可

安全无小事!!!

Web漏洞之HOST头攻击

host头攻击

文档信息

Search

    Table of Contents