zoukankan      html  css  js  c++  java
  • HSTS--提高你的https安全性

    HSTS

    背景:当访问我们的域名从http变成https时,安全性能得到了极大的提升。但这也不代表绝对的安全。

    HSTS简介

    HTTP严格传输安全协议 (HTTP Strict Transport Security,简称:HSTS),是一套由互联网工程任务组发布的互联网安全策略机制。网站可以选择使用HSTS策略,来让浏览器强制使用HTTPS与网站进行通信,以减少会话劫持风险。

    使用HSTS和不适用HSTS的区别

    不适用HSTS的情况

    1. 在浏览器的地址栏输入网址时,有时我们不会输入https协议,浏览器默认使用http进行访问。
    2. TCP握手成功后返回302状态码。
    3. 由于端口号进行改变,需要重新建立连接(源IP、目的IP、源端口、目的端口,这四个有任意一个条件改变即需要重新建立连接)
    4. 进行ssl认证

    出现的问题:

    • 前两步所耗费的rt是没有意义的,并且会让用户从感知上觉得网站相应慢
    • 前面没有使用https,容易出现被攻击和劫持的情况。

    使用HSTS的情况

    在此域名设置的有效期之内,所有的http请求,人们无感知的情况下,在浏览器内部实现307跳转,向网站发起https请求

    HSTS缺陷

    1. HSTS的实现是让通过Strict-Transport-Security这个HTTP Header来告诉浏览器此域名需要使用HSTS功能,因此,第一次请求不可避免的可能需要使用http协议来访问,具体的解决办法是使用Preload来避免第一次的http请求。 可以通过此网站来查看和申请https://hstspreload.org/?domain=www.facebook.com
    2. 当你的浏览器出现缓存并且你的证书出现异常时,可能会导致你的网站无法访问。直到证书问题修复或清楚缓存。

    如何使用HSTS

    在response请求头中添加Strict-Transport-Security

    Strict-Transport-Security: max-age=<expire-time>; includeSubDomains(可选); preload(可选,非标准)
    
    • 设置HSTS的有效时间
    • includeSubDomains表示是否适用于你网站的子域名
    • preload 谷歌维护着一个 HSTS 预加载服务。按照指示成功提交你的域名后,浏览器将会永不使用非安全的方式连接到你的域名。虽然该服务是由谷歌提供的,但所有浏览器都有使用这份列表的意向(或者已经在用了)。但是,这不是 HSTS 标准的一部分,也不该被当作正式的内容。

    nginx配置

    可以在server块或http块中添加

    示例:

    add_header  strict-transport-security max-age=86400;
    
    

    可在浏览器中查看相应头信息

    参考资料:

    https://segmentfault.com/a/1190000023333235

    https://www.upyun.com/tech/article/242/HSTS.html

  • 相关阅读:
    敏感词过滤
    Tarjan+topsort(DP)【P3387】 [模板]缩点
    树状数组【CF703D】Mishka and Interesting sum
    组合数学+错排问题【p4071】[SDOI2016]排列计数
    Dijkstra【p3003(bzoj2100)】[USACO10DEC]苹果交货Apple Delivery
    Trie树【p2264】情书
    线段树+扫描线【p1884】[Usaco12FEB]过度种植(银)Overplanting …
    区间DP【p4290】[HAOI2008]玩具取名
    暴力 【p4092】[HEOI2016/TJOI2016]树
    暴力 【p4098】[HEOI2013]ALO
  • 原文地址:https://www.cnblogs.com/feng0919/p/13364011.html
Copyright © 2011-2022 走看看