标签: HSTS

  • 如何修复“HSTS Missing From HTTPS Server”错误

    错误类型:
    服务器错误
    错误名称:
    缺少HSTS
    英文名称:
    HSTS Missing From HTTPS Server
    错误描述:
    有时,IT安全扫描可能会报告您的站点“缺少HSTS”或“HTTP严格传输安全”标头。如果您遇到此错误,则说明您的网站未使用HSTS,这意味着您的HTTPS重定向可能会使您的访问者面临风险。

    如何修复“HSTS Missing From HTTPS Server”错误

    为HTTPS比HTTP安全得多。但是,如果您遇到“HSTS missing from HTTPS server”消息,那么此协议可能会使您的站点处于危险之中。

    幸运的是,可以堵住这个严重的安全漏洞。即使您没有遇到此错误消息,任何从HTTP重定向到HTTPS的站点都容易受到此漏洞的攻击。因此,采取积极主动的方法并修复此缺陷仍然是明智之举。

    在这篇文章中,我们将探讨“HSTS missing from HTTP server”错误是什么,以及为什么它对任何使用HTTPS重定向的网站来说都是一个如此严重的问题。然后,我们将通过五个简单的步骤向您展示如何解决此问题并阻止黑客。

    1. “HSTS missing from HTTP server”错误简介
    2. 如何修复“HSTS missing from HTTP server”错误

    “HSTS missing from HTTP server”错误简介

    为了帮助确保访问者的安全,网站执行HTTPS重定向的情况并不少见。此重定向将访问者从HTTP转发到网站的HTTPS版本。

    用户可以在其浏览器的地址栏中明确输入HTTP,或点击指向该站点HTTP版本的链接。在这些情况下,重定向可以防止恶意第三方窃取访问者的数据。

    然而,没有什么技术是完美的。如果您的站点确实使用HTTPS重定向,那么您可能容易受到称为安全套接字层 (SSL) 剥离的中间人 (MITM) 攻击。作为此攻击的一部分,黑客将阻止重定向请求并阻止浏览器通过HTTPS协议加载您的站点。结果,访问者将通过HTTP访问您的网站,这使黑客更容易窃取数据。

    或者,攻击者可能会拦截重定向并将访问者转发到您网站的克隆版本。此时,黑客可以窃取用户共享的任何数据,包括密码和支付信息。一些黑客还可能试图诱骗访问者下载恶意软件。

    黑客也有可能通过不安全的连接窃取会话cookie,这种攻击称为cookie劫持。这些cookie可以包含大量信息,包括用户名、密码,甚至信用卡详细信息。

    为了保护您的访问者免受这些攻击,我们建议启用HTTP严格传输安全 (HSTS)。此协议强制浏览器忽略任何直接请求并通过HTTPS加载您的站点。

    HSTS协议(以及您可能想要使用它的原因)

    HSTS是一个服务器指令和网络安全策略。由Internet工程任务组 (IETF) 在RFC 6797中指定,HSTS为用户代理和Web浏览器应如何处理通过HTTPS运行的站点的连接设置了规定。

    有时,IT安全扫描可能会报告您的站点“缺少HSTS”或“HTTP严格传输安全”标头。如果您遇到此错误,则说明您的网站未使用HSTS,这意味着您的HTTPS重定向可能会使您的访问者面临风险。

    这被归类为中等风险漏洞。然而,它非常普遍,对攻击者来说是唾手可得的成果。如果您遇到此错误,那么解决它至关重要。

    通过将HSTS安全标头添加到您的服务器,您可以强制您的站点加载HTTPS协议。这有助于保护您的网站免受cookie劫持和协议攻击。由于您可能会从加载过程中删除重定向,因此您的网站也可能加载得更快

    您可能没有遇到此错误,但仍然担心HSTS。如果您不确定是否启用了HSTS,您可以使用诸如Security Headers之类的工具扫描您的站点。只需输入您网站的URL,然后单击Scan

    使用Security Headers扫描您的站点

    使用Security Headers扫描您的站点

    安全标头将检查您的站点并在标头部分显示所有应用的标头。如果Strict-Transport-Security出现,则您的站点受到保护。但是,如果未列出此标头,那么我们还有一些工作要做。

    如何修复“HSTS Missing From HTTP Server”错误

    对于黑客来说,HSTS漏洞是窃取数据或诱骗访问者执行危险操作的绝佳机会。以下是启用HSTS政策并确保您的网站安全的方法。

    步骤 1:创建手动备份

    启用HSTS政策意味着您的网站发生了重大变化。因此,我们建议在继续之前创建按需备份。这使您可以选择在启用HSTS时遇到任何问题的情况下恢复您的站点。

    在宝塔面板,您可以设置WordPress备份计划。但是,在进行任何重大更改之前创建手动备份仍然是明智之举。要创建此安全网,请登录您的宝塔仪表盘。然后,单击左侧的“网站”菜单,找到你需要备份的网站对应的备份操作,然后在弹窗中点击“备份站点”。

    在宝塔面板执行网站备案操作

    在宝塔面板执行网站备案操作

    接下来,进行网站数据库备份,选择数据库菜单项。找到你需要备份的站点对应的数据库,点击备份列对应的操作项,然后单击弹窗的备份数据库按钮。

    备份网站数据库

    备份网站数据库

    这样,您即对网站完成了网站文件及数据库的备份操作。

    步骤 2:设置HTTP到HTTPS重定向

    在启用HSTS策略之前,您需要将SSL证书部署到您的网站。在宝塔面板,你可以直接申请部署证书。除非您特别需要自定义证书,否则您不必担心手动配置SSL。

    点击宝塔面板左侧的“网站”菜单项,然后找到你需要配置SSL的网站,点击操作项“设置”,点击弹窗左侧的“SSL”,然后根据需要申请及部署SSL,其中宝塔SSL和Let’s Encrypt的证书均免费,前者需要实名认证。

    然后你必须开启右上角的强制HTTPS,才可以实现将HTTP重定向至HTTPS。

    HTTP重定向至HTTPS

    请注意,如果您使用任何第三方代理或设置任何自定义HTTPS规则,那么强制HTTPS可能会导致错误或其他奇怪的行为。

    如果您的Web服务器正在运行Nginx,那么您可以将所有HTTP流量重定向到HTTPS。只需将以下代码添加到您的Nginx配置文件中:

    server {
    listen 80;
    server_name domain.com www.domain.com;
    return 301 https://domain.com$request_uri;
    }
    server {
    listen 80;
    server_name domain.com www.domain.com;
    return 301 https://domain.com$request_uri;
    }
    server {
    listen 80;
    server_name domain.com www.domain.com;
    return 301 https://domain.com$request_uri;
    }

    步骤 3:添加HSTS标头

    您可以将各种类型的指令和安全级别应用于HSTS标头。但是,我们建议添加max-age指令,因为它定义了Web服务器应通过HTTPS提供的时间(以秒为单位)。这会阻止访问只能通过HTTP提供的页面或子域。

    如果您使用的是Apache服务器,则需要打开您的虚拟主机文件。然后,您可以添加以下内容:

    Header always set Strict-Transport-Security max-age=31536000
    Header always set Strict-Transport-Security max-age=31536000
    Header always set Strict-Transport-Security max-age=31536000

    如果您使用的是NG服务器,那么您可以将以下内容添加到您的Nginx配置文件中:

    add_header Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
    add_header Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
    add_header Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

    与往常一样,我们可以为您完成所有艰苦的工作。只需打开支持票证,请求我们将HSTS标头添加到您的站点。我们的团队很乐意对您的Nginx文件进行此更改。

    步骤 4:将您的网站提交到HSTS预加载列表

    HSTS政策有一个主要缺点。浏览器必须至少遇到一次HSTS标头,然后才能将其用于将来的访问。这意味着您的受众将需要至少完成一次HTTP到HTTPS 重定向过程。在此期间,它们将容易受到基于协议的攻击。

    为了弥补这个安全漏洞,谷歌创建了HSTS预加载列表。这列出了所有支持HSTS的网站,然后将其硬编码到Chrome中。通过将您的站点添加到此列表中,访问者将不再需要完成初始HTTPS重定向。

    大多数主要的互联网浏览器都有自己的HSTS预加载列表,这些列表基于Chrome的列表。要获得此列表的资格,您的网站必须符合提交标准。好消息是我们已经涵盖了所有这些要求,因此您可以继续将您的网站提交到HSTS预加载列表。

    一旦您进入此列表,一些搜索引擎优化 (SEO) 工具可能会警告您有关307重定向。当有人试图通过不安全的HTTP协议访问您的站点时,就会发生这些重定向。这会触发307重定向而不是永久301重定向。如果您对此感到担忧,可以使用httpstatus扫描您的站点并验证是否发生 301 重定向。

    步骤 5. 验证您的Strict-Transport-Security标头

    添加HSTS标头后,最好测试它是否正常运行。您可以使用浏览器的内置 Web 工具执行此检查。

    这些步骤将根据您选择的Web浏览器而有所不同。要执行此操作,请检查Google Chrome DevTools,导航到您要测试的网页。然后,您可以单击任何空白区域,然后选择检查。

    闪电博主页

    闪电博主页

    在随后的面板中,选择Network选项卡。然后,您可以检查Headers部分,该部分应包含以下内容:

    strict-transport-security: max-age=31536000
    strict-transport-security: max-age=31536000
    strict-transport-security: max-age=31536000

    或者,您可以使用安全标头工具扫描您的站点。和以前一样,只需输入您网站的URL,然后单击Scan。这将返回一个安全报告,其中应包含一个strict-transport-security标签。如果此标记存在,那么您的HSTS标头现在已正确设置,并且您已成功关闭HTTPS重定向漏洞。

    小结

    从HTTP重定向到HTTPS是一种安全最佳实践。但是,没有任何技术是完美的,这种重定向可能会使您的网站更容易受到SSL攻击。

    考虑到这一点,让我们回顾一下如何修复“HSTS Missing From HTTPS Server”错误:

    1. 创建站点的手动备份。
    2. 设置HTTP到HTTPS重定向。
    3. 添加HSTS标头。
    4. 将您的网站提交到HSTS预加载列表。
    5. 验证您的strict-transport-security标头。
  • HSTS – 如何使用HTTP严格传输安全

    HSTS – 如何使用HTTP严格传输安全

    确保为您的WordPress网站正确设置安全性非常重要,尤其是在保护自己免受黑客攻击方面。您可以实施许多不同的增强功能和最佳WordPress安全实践,以确保您的网站被锁定。

    如果您的WordPress网站通过HTTPS运行,那么我们建议实施的增强功能之一是HSTS安全标头,因为它可以帮助防止中间人攻击 (MitM) 和cookie劫持。

    什么是HSTS(严格的传输安全)?

    HSTS代表HTTP严格传输安全性,由IETF在2012年的RFC 6797中指定。创建它是为了在站点通过HTTPS运行时强制浏览器使用安全连接。它是您添加到Web服务器的安全标头,并在响应标头中反映为Strict-Transport-Security。HSTS很重要,因为它解决了以下问题:

    • 访问者尝试使用您网站页面的不安全版本 (HTTP://) 的任何尝试都将自动转发到安全版本 (HTTPS://)。
    • 旧的HTTP书签和输入您网站的HTTP版本的人会让您面临中间人攻击。在这些攻击中,攻击者改变各方之间的通信并诱使他们认为他们仍在相互通信。
    • 不允许覆盖无效的证书消息,这反过来又保护了访问者。
    • Cookie劫持:当有人通过不安全的连接窃取会话cookie时,就会发生这种情况。Cookie可以包含各种有价值的信息,例如信用卡信息、姓名、地址等。

    如何将HSTS添加到WordPress网站

    从技术上讲,您将HSTS添加到Web服务器本身,然后将其应用于对您的WordPress站点的HTTP请求。通常在从HTTP重定向到HTTPS时会添加301重定向。Google已正式表示您可以同时使用301服务器重定向和HSTS标头。

    虽然我们的系统默认更喜欢HTTPS版本,但您也可以通过将您的HTTP站点重定向到您的HTTPS版本并在您的服务器上实施HSTS标头,使其他搜索引擎更清楚这一点。 Zineb Ait Bahajji,谷歌安全团队

    有不同类型的指令和/或安全级别可以应用于HSTS标头。下面是使用max-age指令的最基本的一种。这定义了Web服务器应仅通过HTTPS传送的时间(以秒为单位)。

    在Apache中启用HSTS

    将以下代码添加到您的虚拟主机文件中。

    Header always set Strict-Transport-Security max-age=31536000
    Header always set Strict-Transport-Security max-age=31536000
    Header always set Strict-Transport-Security max-age=31536000

    在NGINX中启用 HSTS

    将以下代码添加到您的NGINX配置中。

    add_header Strict-Transport-Security max-age=31536000
    add_header Strict-Transport-Security max-age=31536000
    add_header Strict-Transport-Security max-age=31536000

    事实上,添加HSTS标头有性能优势。如果有人试图通过HTTP访问您的站点,而不是发出HTTP请求,它只是重定向到HTTPS版本。

    预加载HSTS

    还有HSTS预加载。这基本上是将您的网站和/或域放入浏览器中实际内置的已批准HSTS列表中。谷歌官方编译了这个列表,它被Chrome、Firefox、Opera、Safari、IE11和Edge使用。将您的站点提交到官方HSTS预加载列表

    预加载HSTS

    预加载HSTS

    但是,您必须满足一些额外要求才有资格。

    1. 服务器必须具有有效的SSL/TLS证书。
    2. 将所有流量重定向到HTTPS。
    3. 在基本域上提供HSTS。
    4. 通过HTTPS为所有子域提供服务,特别包括www子域(如果存在)。
    5. 到期时间必须至少为1年(31536000 秒)
    6. 必须指定includeSubdomains令牌指令
    7. 必须指定预加载令牌指令。

    为此,它需要将额外的子域和预加载指令添加到您的HSTS标头中。以下是更新后的HSTS标头的示例。

    Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
    Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
    Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

    公平警告:从预加载列表中删除您的域可能是一个困难且耗时的过程,因此请确保您将长期使用HTTPS。

    验证HSTS标头

    有几种简单的方法可以检查HSTS是否在您的WordPress网站上运行。您可以启动Google Chrome Devtools,单击“网络”选项卡并查看标题选项卡。正如您在下面的闪电博网站上看到的那样,正在应用HSTS值:“strict-transport-security: max-age=31536000”。

    验证HSTS标头

    您还可以使用免费的在线工具(如securityheaders.io)扫描您的WordPress网站,该工具会让您知道是否应用了strict-transport-security标头。

    strict-transport-security标头

    HSTS浏览器支持

    根据Caniuse的说法,浏览器对HSTS的支持非常广泛,全球超过80%,美国超过95%。2015年在IE11中添加了对HSTS的支持,目前唯一不支持它的现代浏览器是Opera Mini。

    浏览器对HSTS的支持

    我们还建议您查看Tim Kadlec关于HSTS和Let’s Encrypt的这篇文章。

    HSTS对SEO的影响

    在您的网站获得批准并包含在HSTS预加载列表中后,您可能会注意到来自Google Search Console或其他第三方SEO工具的关于307重定向的警告。这是因为当有人尝试通过HTTP访问您的网站时,浏览器中会发生307重定向,而不是301重定向(如下所示)。

    HSTS – 严格传输安全307重定向

    HSTS – 严格传输安全307重定向

    通常307重定向仅用于临时重定向。301重定向用于已永久移动的URL。那么它不应该使用301重定向吗?那么这对SEO的影响呢?

    嗯,事实上,301重定向仍在幕后发生。307重定向发生在浏览器级别,而不是服务器级别。您可以通过在服务器级别检查重定向的工具(例如httpstatus )运行该站点,您会发现实际上301重定向仍在发生。因此,您无需担心HSTS标头会影响您的SEO。

    HSTS 301重定向

    HSTS 301重定向