仅 HTTPS 站点实施者指南(服务器端)

信息安全 Web应用程序 tls 配置 防御
2021-08-31 05:55:56

HTTPS 攻击的最新趋势是攻击 HTTP 协议。如果我想要的唯一协议是 HTTPS,我应该怎么做才能提高网站的安全性?

一些易于实施的想法是

更高级/技术选项可能包括

可能会破坏事物的选项(例如用户体验)

  • 禁止以下 Web 浏览器:
  • 禁止端口 80
  • 仅允许来自列入白名单的一组域的重定向。不允许他人链接到您的网站,并强制用户输入 HTTPS URL
  • 为该站点的所有操作使用私有证书。通过 SSL 连接发出指纹(或 RootCA)

您对实现部分或全部这些技术的网站有何看法?

您会推荐哪些其他技术?(例如使用/不使用 OpenID、某些 HTTP 标头指令等)

2个回答

主要有:

  • 在站点范围内使用 SSL。不要通过http提供任何东西。相反,任何通过 http 的连接都应立即通过 https 重定向到主站点的登录页面。

  • 使用 HTTPS 严格传输安全。这将告诉用户的浏览器:请仅通过 https 连接到我。这可以防御 sslstrip 和类似的中间人攻击。

  • 在所有 cookie 上设置安全标志。 这将确保 cookie 仅通过 https 通道发送,绝不会通过不安全的 http 链接发送。

  • 避免通过 http 提供第三方活动内容。 不要通过 http 加载外部活动内容。确保您从第三方来源加载的任何 CSS、Javascript、小部件、分析或广告均通过 https 加载。

    • 可能更好的是,您可以考虑制作自己的副本并尽可能从您自己的服务器提供这些资源,因此您不需要从第三方来源加载它们。在许多情况下,您只需将副本存储在您自己的服务器上即可避免从第三方来源加载 CSS、Javascript 库或小部件。

    • 对于分析,请注意 Google Analytics 确实支持 https。

    • 广告是最难的部分。如果您使用广告,您可能别无选择,只能通过 http 接受第三方广告,这是一个安全风险。如果这样做,请在 iframe 中投放广告(不要使用 SCRIPT SRC 将广告集成到您的页面中)。

    加载托管在第三方主机上的图像是可以的,只要它们是通过 HTTPS 加载的(以避免混合内容警告)。

我想如果你做这四件事,你会涵盖大部分问题。其余的细节可以在特定站点的基础上进行评估,但它们的重要性可能是次要的(在我看来)。

如果你想看中,你可以看看证书固定和类似的新兴技术,但从以上四个开始已经是一个足够重要的项目了。

用户安全

  • 你错过了一件极其重要的事情:CSRF 缓解。

    务必充分了解相关问题。Tldr:除了授权令牌(例如会话cookie)之外,您还需要对 每个操作进行质询,以识别该操作是用户有意还是无意。

  • 修复JSONP 泄漏

  • X-Content-Type-Options: nosniff, 在所有页面上防止 MIME 嗅探, 尤其是对于用户生成的页面。

  • 内容安全政策

  • 确保安全的“重置密码”机制,以防止人们重置他人的密码并获得欺诈性访问。

  • 当用户使用弱密码或完全不接受它时,显示一个巨大 的警告。

  • 培训用户(可能通过每个页面上指向绿色条的箭头图像)检查您的页面是否使用 HTTPS 加载。如果他们曾经使用不支持 HSTS 的浏览器,至少他们会注意到缺少 HTTPS。



服务器/用户的安全



用户隐私

  • 仅对 ajax 应用填充是不够的。为了保护您的用户免受网络监控所有请求和响应都必须填充数据。请求不需要时间填充,但响应必须。

  • 修复由于响应时间变化而导致的历史泄漏:

    假设 Alice 正在网上冲浪,她访问 Bob 的网站http://www.bob.comBob 想知道 Alice 是否访问过 Charlie 的网站 ( http://www.charlie. com)。

    首先,Bob 查看 Charlie 的站点,然后选择该站点的任何访问者都会看到的文件。假设 Bob 在http://www.charlie.com/ logo.jpg 中选择了包含 Charlie 公司徽标的文件。Bob 将确定徽标文件是否在 Alice 的 Web 缓存中。如果文件在她的缓存中,那么她一定最近访问过 Charlie 的网站。

    Bob 编写了一个 Java 小程序来实现他的攻击,并将其嵌入到他的主页中。当 Alice 查看攻击页面时,Java 小程序会自动下载并在 Alice 的浏览器中运行。小程序测量访问http://www. charlie.com/logo.jpgAlice 的机器所需的时间,并将此时间报告给 Bob。如果时间小于某个阈值(例如 80 毫秒),Bob 会得出结论,Alice 最近访问过 Charlie 的站点;如果它大于阈值,他得出结论,她最近没有去过该网站。



服务器的隐私



可用性



您无法修复的其他杂项(浏览器问题):