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

项目中遇到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
添加如下配置

1
2
3
4
5
6
7
8
9
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即可

1
nginx -s reload

Apache解决方案

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

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

重启apache即可

安全无小事!!!

Web漏洞之HOST头攻击

host头攻击


URL存在http host头攻击漏洞的解决办法
https://www.hancher.top/2023/06/20/safe-http-url-header-attack/
作者
寒澈
发布于
2023年6月20日
许可协议