HTTP标头开发方法

用於检查网站的当前标头。
标头按重要性顺序列出,但是请注意,除非从头开始设计应用程序,否则很难实施适当的安全内容安全策略。
尝试使用标头获得一些快速优势:
http-strict-transport-security
X-Frame-Options
X-XSS-Protection
X-Content-Type-Options

https://observatory.mozilla.org

建议
  • http-strict-transport-security
    从现在起,严格的传输安全标头告诉浏览器通过加密连接载入网站。
    这有助於避免所谓的SSL分离攻击,即处於中间人位置的攻击者将用户降级为不安全的连接。

    • 初始设定:
      告诉浏览器记住使用HTTPS一天。
      注意在"最大使用期限"的持续时间内,您无法切换回HTTP。
      建议由较低的测试值开始,并在确信应用程序按预期工作後将其增加。
        http-strict-transport-security:max-age = 86400
        ```	
      
    • 最终设定:
      建议将最大年龄限制为至少6个月(max-age = 15768000)
      理想数值是2年(max-age = 63072000)。
        http-strict-transport-security:max-age = 63072000
        ```	
      
  • 内容安全政策(CSP)
    该标头旨在减少甚至消除XSS(跨站脚本攻击)的影响。
    它可以用来告诉浏览器网站应该从何处载入资源。
    可以在这里找到一个很好的工具来生成策略并获得所有指令的说明:
    https://report-uri.io/home/generate

    引用Mozilla:
    CSP的主要为禁用不安全的JavaScript嵌入式写法。
    行内(inline)JavaScript若包含不正确的用户输入,其转义时可能会生成由Web浏览器解释为JavaScript的程序码。
    通过使用CSP禁用嵌入式JavaScript,您可以有效消除针对您站点的几乎所有XSS攻击。
    https://csp.withgoogle.com/

    Google已发现,大多数利用白名单的CSP​​都不会阻止XSS,因为由於白名单网域域(例如google.com)上存在可滥用的端点,它们可以被绕开。
    因此推荐的方法不再是白名单,而是使用杂凑或乱数。
    它要求每个''标签都具有一个关联的随机生成的乱数,该乱数在服务器响应的CSP头中设定。

      <script src =" https://www.example.com/script.js" nonce =" {{csp-nonce}}"> </ script>
    

    设定范例:
    object-src'none'; script-src'nonce- {random}''unsafe-inline''unsafe-eval''strict-dynamic'https:http :; base-uri'none'; frame-ancestors'none';
    报告模式:(Content-Security-Policy-Report-Only)
    可能需要一个报告端点,才能在'<您的域名>/csp-violation-report-endpoint'接收CSP违规报告。
    object-src'none'; script-src'nonce- {random}''unsafe-inline''unsafe-eval''strict-dynamic'https:http :; base-uri'none'; frame-ancestors'none'; report-uri/csp-violation-report-endpoint/

  • X-Frame-Options

    此标头告诉浏览器其他网站是否允许构架网站。
    通过将此标头设定:为允许的域列表,我们可以防止Clickjacking攻击。
    https://www.owasp.org/index.php/Clickjacking

    推荐设定:
    X-Frame-Options可由"frame-ancestors"属性代替。
    此属性更加灵活。
    X-Frame-Options:DENY
    frame-ancestors'none';

  • X-XSS-Protection
    大多数浏览器中内置的跨站脚本过滤器的配置。
    https://scotthelme.co.uk/hardening-your-http-response-headers/#x-xss-protection

    推荐设定:
    X-XSS-Protection:1;模式=阻止

  • X-Content-Type-Options

    该标头告诉浏览器不要猜测所提供内容的MIME(多用途Internet邮件扩展名)类型,而是信任" Content-Type"标头。如果没有设定:X-Content-Type-Options标头,则某些较旧的浏览器可能会错误地将文件检测为脚本和样式表,从而可能导致XSS攻击。
    推荐设定::
    X-Content-Type-Options:nosniff

  • 推荐政策

    标头基本上控制在引用标头中发送的内容。使用此标头的安全性在於避免了URL中传输的会话标识符或其他敏感信息通过引荐标头传递到其他域的情况。这里有不同的选项,范围从不发送任何引荐标头到仅发送域(源)。最佳设定:必须基於应用程序对Referer标头的使用来确定。推荐的设定:"来源"仅发送域名,而不发送URL的路径部分。之所以选择它,是因为它在大多数浏览器中都受支持。

    推荐设定:
    我们可能还想执行" Referrer-Policy:strict-origin",以仅将引荐来源标头发送到HTTPS站点,以保护用户的隐私,但Edge和Safari目前不支持。

  • API

    对於API(应用程序编程接口),我们要确保对流量进行加密并限制XSS漏洞的潜在影响,例如在错误页面中,则由於内容安全策略不允许使用脚本或iframe,因此无法将其用於运行Javascript。请注意,对於在同一域中具有文档的API(例如Swagger),这将无法正常工作,需要进行调整。

    推荐设定::
    内容安全策略:default-src'none';框架祖先"无"
    严格的运输安全性:最大年龄= 31536000
    X-Content-Type-Options:nosniff

  • 参考资源:

    有关Mozilla关於Web应用程序安全性的更多最佳实践和建议,请参见以下链接:


<<:  Day36. 范例:快取代理(代理模式)

>>:  [C]makefile范例实作,整理已有的程序码

虹语岚访仲夏夜-26(专业的小四篇-终)

谁的记忆拥抱不痛  谁的叹息月娘才懂 谁的发梢随风舞动  谁的笑容雨後彩虹 谁的距离无法放纵  谁...

Day07:部门与工程团队间协作的技巧(上)

一、前言   所谓的团队合作,我想最重要的就是如何沟通与使用有效之协作工具!沟通属於较偏人性与软性之...

[Day28]一寸光阴不可轻-修好你的资料,补值初学上线

今天我们要来解决空缺的部份,我们要使用的素材如下,是一张每隔五分钟就纪录温度的资料表,我结图整张表最...

Vue.js 从零开始:methods

methods 方法 在Vue里面methods是以物件来定义,内层都是函式,以下几种来示范meth...

Day-21 SONY 的刁蛮三公主、PS3 步步艰辛的复兴之路

以 PS1 和 PS2 称霸於前两个世代的 SONY、在新的世代推出的主机当然就叫做 PS3。然而身...