惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Proofpoint News Feed
Blog — PlanetScale
Blog — PlanetScale
GbyAI
GbyAI
C
Check Point Blog
腾讯CDC
Stack Overflow Blog
Stack Overflow Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
The GitHub Blog
The GitHub Blog
A
About on SuperTechFans
Recent Announcements
Recent Announcements
L
LangChain Blog
Microsoft Azure Blog
Microsoft Azure Blog
小众软件
小众软件
J
Java Code Geeks
博客园_首页
Jina AI
Jina AI
美团技术团队
H
Help Net Security
MyScale Blog
MyScale Blog
Engineering at Meta
Engineering at Meta
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
人人都是产品经理
人人都是产品经理
Y
Y Combinator Blog
S
SegmentFault 最新的问题

Jiajun的技术笔记

你好,2026! TiDB 源码阅读(六):TiDB Coprocessor 源码解析 性能优化的核心思想 TiDB 源码阅读(五):索引 TiDB 源码阅读(四):AST、逻辑计划、物理计划 CockroachDB Serverless Architecture podman 无故退出 Cursor Control-L (CTRL-L) Keyboard Shortcuts in Terminal Replace docker with podman Using xmonad with xfce4 A RC script for freebsd frpc 自己动手写一个k8s controller AI 会取代你的(编程)岗位吗? 自建DERP服务器提升Tailscale连接速度(使用Nginx转发) 自动升级Docker容器 再读《程序员修炼之道-从小工到专家》 让浏览器下载文件 再读《软件随想录》/《黑客与画家》/《软技能》 HTTP 压力测试中的 Coordinated Omission 2的补码 编程语言中的 context 是什么? flutter macOS 构建出错 Flatpak 使用小记 Golang CAS 操作是怎么实现的 PostgreSQL 当MQ来使用 Clash 结合 工作VPN 的网络设计 使用 PostgreSQL 搭建 JuiceFS PostgreSQL 配置优化和日志分析 有GitHub Copilot?那就可以搭建你的ChatGPT4服务 窗口函数的使用(以PG为例)
开启HSTS(HTTP Strict Transport Security)
Jiajun Huang · 2019-06-04 · via Jiajun的技术笔记

HSTS(HTTP Strict Transport Security) 的作用就是,当你使用了一次之后,浏览器就会记住这个选项,之后都是直接访问HTTPS。

原理是通过设置一个头部:Strict-Transport-Security: max-age=15552000; includeSubDomains。格式是 Strict-Transport-Security: max-age=<过期时间>; includeSubDomains, 其中 includeSubDomains 是可选的,<过期时间> 是在多少秒之后过期的意思。

如果一个网站同时提供HTTP和HTTPS两种服务,那么只要访问过HTTPS服务,在所设置的HSTS过期之前,浏览器都会直接访问HTTPS,这样 可以在一定程度上保证数据传输的安全。但是缺点也很明显,如果用户第一次访问的时候是访问HTTP服务,那么就可以在这一步进行中间人 攻击,把重定向服务中的 https:// 替换成 http://,这样就仍然可以监听所传输的数据。

解决方案是关闭HTTP服务,把所有的HTTP服务都重定向到HTTPS,例如Nginx中这样配置:

server {
    listen 80;

    limit_req zone=perip burst=10 nodelay;
    access_log /var/log/nginx/jiajunhuang.com.access.log;
    error_log /var/log/nginx/jiajunhuang.com.error.log;

    server_name jiajunhuang.com;

    if ($scheme != "https") {
        return 301 https://$host$request_uri;
    }
}

而Nginx中可以通过增加头部来实现HSTS:

server {
    listen 443 ssl;
    server_name www.example.com;

    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
}

如何关闭HSTS?

如果你的网站不再提供HTTPS,而你想关闭HSTS,那么必须要:

  • 停止增加 Strict-Transport-Security 这个头部
  • 从停止增加头部开始,等待 <过期时间> 那么久之后,也就是所有浏览器里的配置都已经失效了之后,关闭HTTPS

参考资料: