怎么在Apache中设置HSTS策略防止中间人劫持攻击实战

陌枫酱_5261

陌枫酱_5261

2026-04-10

946人浏览

原创

Apache中启用HSTS需先启用headers_module,仅在HTTPS虚拟主机中配置Header always set Strict-Transport-Security,推荐值为"max-age=31536000; includeSubDomains; preload",但includeSubDomains和preload须谨慎使用,上线前应先用短max-age测试并确保全站HTTPS稳定。

怎么在apache中设置hsts策略防止中间人劫持攻击实战

如何在Apache中启用HSTS头(Strict-Transport-Security)

直接加 Header always set Strict-Transport-Security 是最常见做法,但仅此一行往往无效——Apache默认不加载headers_module,且该指令必须在HTTPS虚拟主机内生效,HTTP站点上设置会被浏览器忽略。

实操步骤:

  • 确认模块已启用:a2enmod headers(Debian/Ubuntu)或检查LoadModule headers_module是否在httpd.conf中取消注释
  • 只在启用SSL的块中添加配置,不要放在:80里
  • 推荐写法:Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
  • max-age=31536000对应1年,低于6个月(15768000)的值不会被Chrome/Edge的HSTS预加载列表接受

为什么includeSubDomains和preload不能随便加

includeSubDomains会让所有子域名强制走HTTPS,一旦某个子域名(比如dev.example.com)还没配SSL,访问就会失败;preload更危险——它意味着你申请加入浏览器内置HSTS列表,之后即使删掉响应头,浏览器仍会强制跳转HTTPS长达数月。

安全建议:

  • 上线前先用max-age=300(5分钟)测试,确认全站HTTPS无误再逐步拉长
  • 确保所有子域名都已部署有效证书,且能稳定响应443端口请求
  • 要进preload列表,必须同时满足:max-age ≥ 31536000、includeSubDomains、preload,并提交到https://hstspreload.org

常见错误:HSTS头没生效的几个典型原因

浏览器开发者工具的Network标签页里看不到Strict-Transport-Security头?大概率是以下情况之一:

Apache Superset Dashboard and SQL Exploration Skill
Apache Superset Dashboard and SQL Exploration Skill

Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。

下载
  • 配置写在了HTTP(:80)虚拟主机里——HSTS只对HTTPS响应生效
  • Apache配置未重载:systemctl reload apache2(不是restart)或apachectl graceful
  • 反向代理(如Nginx、CDN)覆盖了响应头,需在代理层也设置Strict-Transport-Security
  • 响应状态码不是2xx(比如重定向链中某步返回了301但没带HSTS头),HSTS只在2xx响应中被接受

PHP或应用层能否替代Apache设置HSTS

可以,但不推荐。例如PHP中用header('Strict-Transport-Security: max-age=31536000'),问题在于:一旦某条PHP路径出错(如未认证跳转、空输出、异常终止),HSTS头就丢失;而Apache的Header always set是响应发出前强制注入,稳定性更高。

例外场景:

  • 动态控制max-age(如灰度期用短时间,全量后切长周期)
  • 某些PaaS环境无法修改Web服务器配置,只能靠应用层
  • 注意:PHP必须在session_start()之前调用header(),否则报headers already sent

HSTS本身不加密流量,也不防DNS污染,它只是告诉浏览器“以后别再用HTTP连我”。真正容易被忽略的是:一旦开启preload,回退成本极高——没有“关闭开关”,只能等浏览器下次更新内置列表。上线前务必用curl -I https://yoursite.com反复验证头是否稳定出现。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

apache

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Java 网络安全
Java 网络安全

本专题聚焦 Java 在网络安全与加密通信中的应用,系统讲解常见加密算法(MD5、SHA、AES、RSA)、数字签名、HTTPS证书配置、令牌认证(JWT、OAuth2)及常见安全漏洞防护(XSS、SQL注入、CSRF)。通过实战项目(如安全登录系统、加密文件传输工具),帮助学习者掌握 Java 安全开发与加密技术的实战能力。

2025.10.13

5205

12

PHP 安全与防护
PHP 安全与防护

本专题聚焦于PHP开发中的安全问题与防御措施,详细讲解SQL注入、XSS攻击、CSRF攻击、文件包含漏洞等常见安全风险及其修复方法。通过结合实际案例,帮助开发者理解漏洞成因,掌握输入验证、会话安全、加密存储与安全编码规范,全面提升PHP网站的安全防护水平。

2025.11.04

455

21

Docker Desktop怎么设置端口映射
Docker Desktop怎么设置端口映射

本专题聚焦Docker Desktop容器端口映射与访问配置,整理从创建容器、设置端口绑定到验证本地服务访问的操作流程。针对端口被占用、映射配置错误、容器服务无法访问等情况,也提供相应的检查方向,方便用户完成端口配置。

2026.11.03

0

18

Docker Desktop镜像构建教程
Docker Desktop镜像构建教程

想使用Docker Desktop将本地项目构建成Docker镜像?本专题围绕镜像构建的实际操作展开,介绍Dockerfile编写、构建命令使用、镜像标签设置和构建日志查看等内容,同时整理镜像无法生成、依赖安装失败及构建缓存异常等问题的排查思路。

2026.11.03

0

11

Docker Desktop容器创建指南
Docker Desktop容器创建指南

本专题聚焦Docker Desktop容器创建与运行配置,介绍通过本地镜像或远程镜像创建容器的方法,以及容器启动、终端访问、日志查看和基础管理等操作。针对端口冲突、参数配置不当、容器无法启动等情况,也整理了相应的排查方向。

2026.11.03

0

11

Tailwind CSS 如何制作导航栏和卡片
Tailwind CSS 如何制作导航栏和卡片

用 Tailwind CSS 制作导航栏和卡片,可先搭建语义化结构,再组合 Flex、Grid、间距、圆角与阴影类。这里整理横向导航、移动端菜单、卡片网格及悬停效果的相关文章,帮助你把常见页面组件做得清晰且适配不同屏幕。

2026.11.03

0

17

Tailwind CSS 响应式布局怎么写
Tailwind CSS 响应式布局怎么写

Tailwind CSS 响应式布局通常从移动端样式写起,再用 sm、md、lg 等前缀调整不同屏幕宽度下的网格、间距和导航。本专题整理断点配置、Grid 与 Flex 自适应布局及常见溢出问题,帮助你逐步完成多设备适配。

2026.11.03

0

19

Tailwind CSS 常用类名怎么记
Tailwind CSS 常用类名怎么记

Tailwind CSS 类名很多,先按布局、间距、文字、颜色和状态分组记忆,再通过官方文档检索具体写法。本专题结合类名排序、动态拼接失效、自定义实用类等问题,帮助你建立常用类名的速查方法。

2026.11.03

0

12

码上飞入口地址合集
码上飞入口地址合集

本专题汇总了码上飞(CodeFlying)的官方入口地址合集,涵盖官网主站及网页版在线使用入口,支持注册登录后直接在线体验零代码AI应用生成。同时整理了APP端下载渠道与小程序入口,助你快速访问平台,通过自然语言描述需求即可生成应用、小程序或网站。

2026.11.03

0

10

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Apache Maven 官方安装指南
Apache Maven 官方安装指南

共0课时 | 0人学习

Apache Maven 官方用户中心
Apache Maven 官方用户中心

共0课时 | 0人学习

Apache Subversion 官方手册
Apache Subversion 官方手册

共0课时 | 0人学习