加密

加密通常是一个保障安全的主题,但它对于隐私也同样重要。加密的目标是防止他人读取加密信息...但阻止他人读取您的信息是确保信息私密性的一种方式。通常,用户能够执行这些操作的操作数量有限,但在您作为他们正在使用的服务提供商的协助下,加密有助于保留他们的数据。

有三种相关方法可以应用加密来帮助保护用户隐私:传输中加密、静态加密和端到端加密:

  • 传输过程中加密是指在用户与您的网站之间保持数据加密(即 HTTPS)。您可能已经为网站设置了 HTTPS,但确定要向网站传输的所有数据都经过加密吗?这正是重定向和 HSTS 的用途,下文对其进行了介绍,并且应该纳入您的 HTTPS 设置。
  • 静态加密是指对存储在服务器上的数据进行加密。这样可以防止数据泄露,是安全立场的重要组成部分。
  • 端到端加密是指在客户端上的数据到达您的服务器之前对其进行加密。这样可保护用户数据,即使是您也无法访问:您可以存储用户的数据,但无法读取这些数据。这很难实现,并且并非适用于所有类型的应用,但它对于保护用户隐私而言非常有价值,因为除了自己之外,任何人都看不到自己的数据。

HTTPS

第一个举措是通过 HTTPS 提供 Web 服务。您很可能已经执行了此操作,但如果没有,这是重要的一步。HTTPS 是 HTTP,即浏览器用于从服务器请求网页的协议,但使用 SSL 进行加密。 这意味着外部攻击者无法读取或干扰发送者(您的用户)和接收者(您)之间的 HTTPS 请求,因为该请求已加密,所以他们无法读取或更改该请求。这属于传输加密:在数据从用户向您或从您传输到用户的过程中。在传输过程中对 HTTPS 加密还会阻止用户的 ISP 或所用 Wi-Fi 提供商读取作为他们与您的服务的关系的一部分发送给您的数据。这还可能会影响您的服务功能:在许多情况下,使用现有 JavaScript API 时,网站都需要通过 HTTPS 提供。 MDN 包含更全面的列表,而安全上下文背后的 API 包括 Service Worker、推送通知、网络共享和网络加密,以及一些设备 API。

如需通过 HTTPS 传送您的网站,您需要拥有 SSL 证书。您可以通过 Let's Encrypt 免费创建这些内容,或者通常由您的托管服务商(如果您使用)提供此类文件。您也可以使用第三方服务来“代理”您的网络服务,并且可以提供 HTTPS 以及缓存和 CDN 服务。此类服务有很多示例,例如 Cloudflare 和 Fastly,具体使用哪个取决于您当前的基础架构。过去,HTTPS 的实现可能负担过重或费用高昂,因此往往只能在付款页面或特别安全的来源上使用 HTTPS;然而,免费提供的证书、标准的改进以及日益普及的浏览器都消除了所有这些障碍。

正确做法

  • 在您的服务器上为所有内容启用 HTTPS(无论您选择哪种方法)。
  • 考虑在服务器前使用代理,例如 Cloudflare(有关过程的说明,请参阅 httpsiseasy.com/)。
  • Let's Encrypt 将引导您完成创建您自己的 Let's Encrypt SSL 证书的过程。
  • 或者,直接使用 OpenSSL 创建自己的证书,并让您选择的证书授权机构 (CA) 为其签名(如需详细了解如何执行此操作,请参阅启用 HTTPS)。

您选择哪种方法取决于业务需要权衡。让第三方为您管理 SSL 连接是最简单的设置,并且确实可以带来其他好处,例如负载均衡、缓存和分析。但与此同时,他们也明显将部分控制权移交给了第三方,并且不可避免地依赖于他们的服务(以及可能需要支付的费用,具体取决于您使用的服务和流量水平)。

过去,SSL 流程是通过生成证书并由 CA 进行签名的方式,但如果提供商支持 Let's Encrypt,或者您的服务器团队在技术上具有足够的能力,那么使用 Let's Encrypt 会更容易,并且完全免费。如果您使用的服务级别高于云托管,则您的提供商通常会提供 SSL 即服务,因此有必要检查。

原因

安全性是您隐私保护故事的一部分:能够证明您会确保用户数据安全无虞而不受干扰,有助于建立信任。如果您使用的不是 HTTPS,您的网站也会被浏览器标记为“不安全”(而且已经有一段时间了)。 现有的 JavaScript API 通常仅适用于 HTTPS 网页(“安全源”)。还可以防止用户的互联网使用情况被 ISP 发现。 这无疑是最佳做法;现在,几乎没有理由不为网站使用 HTTPS。

浏览器如何呈现 HTTP(不安全)页面