【问题标题】:How do I provide some security without HTTPS?如何在没有 HTTPS 的情况下提供一些安全性?
【发布时间】:2014-06-25 05:16:05
【问题描述】:

首先:我知道 HTTPS 是 HTTP + SSL。我知道 SSL 是通过 Internet 安全发送连接信息的唯一真正选项。我的问题与 SSL 不是选择和加密不是必需的情况有关 - 但无论如何都是需要的。

第二:这不是重复的。诸如How to send password securely via HTTP using Javascript in absence of HTTPS? 之类的问题描述了其他方法存在的问题,但在将加密用于教育目的时,并不能将其用作次优方法。

作为课外互联网安全研究的一部分,我想创建一个使用用户配置文件并允许用户通过密码登录的网站。本网站不获取信用卡信息,不会保存敏感的个人信息,一般来说,不会是值得窃取个人信息的网站。 出于这个问题的目的,我会编造一些东西并说该网站仅包含一个人最喜欢的电影。由于这些原因,我不想使用 SSL。

不过,我确实希望使用其他加密。我知道加密不是必需的,因为实际上没有人会试图窃取一个网站的帐户,该网站只保存某人最喜欢的电影的信息。目的纯粹是为了教育,看看次安全选项在 SSL 之后的安全性如何。 如上所述,我知道 SSL 是唯一真正的安全连接。

问题:鉴于我所描述的情况,提供“有点安全”连接的选项有哪些?网站可以使用 IPsec 来保护连接,和/或使用某些东西比如挑战-响应?

提前谢谢你。

编辑:我需要对所有流量进行加密,而不仅仅是登录。

【问题讨论】:

  • 请澄清:您想要对所有流量进行加密,还是只想在没有 HTTPS 的情况下进行安全登录?
  • 啊。好问题。加密所有流量。
  • 您自己说内容不敏感,为什么要加密所有内容?听起来您真正需要的只是在登录期间加密用户凭据,而标准 HTTP 已经通过其 Authorization 和 WWW-Authenticate 标头支持这一点。使用 NTLM 或 Kerberos 等安全身份验证方案,它们都使用质询-响应模型。
  • 好点。除了对响应的好奇之外,我没有任何特别好的理由选择“加密所有流量”,因为这似乎是两者中更困难的任务。

标签: security ssl encryption https ipsec


【解决方案1】:

您需要一些构建块:

  • 您不能在您的站点中使用经典的表单提交和 HTTP 链接,但您必须通过 AJAX 运行所有请求
  • 在发送 AJAX 请求之前,您必须加密:This SO question 为您提供了如何与 PHP 对话的良好指示
  • 在从 PHP 发回您的回复之前,您必须对其进行加密,然后在 JS 中解密

这很好用,我经常使用它——它为 HTTPS 的某些方面提供了一个简单的替代方案(我认为这从根本上被破坏了)

【讨论】:

  • 您的技术比 HTTPS 更糟糕,因为没有身份验证步骤。
  • @EJP - 是什么阻碍了 OP 使用相同的方法发送登录请求?
  • @EugenRieck EJP 不是在谈论登录,而是关于验证服务器。这是 SSL/TLS(以及 SSH 和其他一些技术)的基石。如果不检查服务器的真实性,您的方案就会受到中间人攻击并且很容易被破坏。
  • @EugeneMayevski'EldoSCorp 这就是为什么我说“HTTPS 的某些方面 的简单替代方案”。也就是说,服务器的身份验证是 HTTPS 中最糟糕的部分,它依赖于信任链,即不可信且不可验证。
  • SSL/TLS 中的身份验证本身既没有损坏也没有无法验证。一些特定的配置可能是,但不是全部。在您的情况下,您的计划被设计破坏了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-25
  • 2015-01-06
  • 2014-11-26
  • 2021-06-09
相关资源
最近更新 更多