host头攻击
一、问题源起
HTTP1.1规范中在增加了HOST头信息,用于存储服务端与客户端的路由信息。
例如:
Request的Header里就有一个标名请求,它是用来记录服务端网站域名的。
如果前端或者后台正好用到这个值,比如jsp的
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort();
那么黑客就可以通过修改HOST里域名值以达到攻击的目的。
比如request.getServerName()改成:www.baidu1.com,这样页面内引用后请求就会被转接了。
二、解决思路
主要解决方案主要分为两个:
1、不用HOST头的东西
2、防止“敌方”篡改这部分信息
3、使用加密等手段,使得篡改成本高到无以复加
三、解决方案
1、nginx代理强制指定header内容,例如:
// nginx修改ngnix.conf文件
server {
...
server_name www.abc.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
...
}
2、Apache,修改httpd.conf文件,指定ServerName,并开启UseCanonicalName选项。
3、Tomcat,修改server.xml文件,配置Host的name属性。
参考来源:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)