zoukankan      html  css  js  c++  java
  • 浅析HSTS

    浅析HSTS

    一、HSTS是什么?

    HSTS全称:HTTP Strict Transport Security,意译:HTTP严格传输安全,是一个Web安全策略机制。

    二、HSTS解决什么问题?

    它解决的是:网站从Http转跳到Https时,可能出现的安全问题。

    一般从Http跳转Https的流程:

    Client从Http切换到Https前是明文传输,因此是可以被Man-In-The-Middle劫持的,如下流程:


    三、HSTS如何解决?

    要解决从Http切换到Https被劫持的问题,只要一开始就没有Http请求即可,流程如下:


    四、HSTS如何知道,哪些请求该转为Https,哪些不该转?

    方案1. 最近一次请求的Https响应中(Response)中,带上HSTS Header:

    Strict-Transport-Security: <max-age=>[; includeSubDomains][; preload]
    
    • max-age:
      • 必选,单位:秒。
      • 意义:HSTS header过期时间,一般设置为1年,即31536000秒。而每次Response Header都带上HSTS Header,则可不断刷新其过期时间。
    • includeSubDomains:
      • 可选。
      • 意义:需要开启HSTS的域名/子域名。
    • preload:
      • 可选
      • 意义:当加入了浏览器内置Preload List时才需要设置该项。

    方案2. HSTS Preload List

    方案1还是有个漏洞:

    • 如果第一次访问网站A就被劫持了,哪方案1岂不白搭?
    • 清Cookies或者HSTS Header过期了,下次访问岂不又风险重重?

    基于以上问题,就需要方案2(HSTS Preload List):

    官方说明:
    
    This is a list of sites that are hardcoded into Chrome as being HTTPS only.
    HSTS Preload List是一个站点列表,它被hardcode写入Chrome中,列表中的站点将会默认使用 HTTPS 进行访问。
    
    Most major browsers (Chrome, Firefox, Opera, Safari, IE 11 and Edge) also have HSTS preload lists based on the Chrome list. (See the HSTS compatibility matrix.)	
    主流浏览器(Firefox, Opera, Safari, IE 11 and Edge)都有和Chrome一样的HSTS Preload List。
    

    这样,就直接从源头上封死Http转跳Https时被劫持的可能性。

    五、其他相关:

  • 相关阅读:
    第十五次-语法制导的语义翻译
    第十四次--算符优先分析
    第十二次-递归下降语法分析
    第十一次-LL(1)文法的判断,递归下降分析程序
    第十次-消除左递归
    第九次-DFA最小化,语法分析初步
    个人作业——软件工程实践总结作业
    【评分】Alpha阶段
    K 班前7次作业成绩汇总
    【评分】第七次作业--项目需求分析(团队)
  • 原文地址:https://www.cnblogs.com/hyddd/p/7718184.html
Copyright © 2011-2022 走看看