通过 websocket 登录 - 这安全吗?

Run*_*sen 3 authentication passwords ssl websocket

在网页上(带有 https)

  1. 客户端使用 websocket 连接到服务器(通过 TSL 保护 wss)
  2. 服务器发送“准备好用户和密码”消息
  3. 用户输入信息,客户端发送信息
  4. 服务器验证,只要 websocket 连接,就知道收件人是谁

编辑:我正在考虑上述内容,而不是使用 post 方法。

Iva*_*van 7

它可以安全地抵御某些攻击,但像往常一样,有多种方法可以闯入该网站,我们必须全面评估安全性

数据库密码

从描述中不清楚,但您所描述的设置以纯文本形式存储用户密码似乎是合理的。

这方面的最佳实践是用盐计算密码的哈希和并将其保存在数据库中,因此如果攻击者设法获得数据库转储,他们将需要大量时间来根据该数据猜测密码。

速率限制

您应该限制不成功的登录尝试,这样攻击者就无法通过暴力方式轻松选择密码。

记录

这里可能出现问题的另一件事是日志记录:您需要确保凭据不会出​​现在应用程序日志文件中(我已经在信用卡号中看到了这一点)。

类似的担忧是在验证结束后保留​​敏感信息太长时间,这使得它们更容易受到攻击(例如,在 Java 中强制进行堆转储并从该文件中选取它们)

SSL机密材料

如果您没有足够重视减少对 ssl 私钥的访问,有人可以进行中间人攻击。

根据您的应用服务器支持的密码套件,如果攻击者窃取了密钥,先前记录的通信可能很容易被解密。对此的抵制概念称为前向保密您可以在此处验证您是否正确调整了您的网络应用程序。

您的证书颁发机构(或任何其他机构)可以向其他人颁发您网站的证书,从而允许攻击者歪曲您的身份(请参阅Mozilla 和 WoSign,其他域错误)。

跨域资源共享

您还应该设置Content-Security-Policy,以便强制浏览器代码将此身份验证信息发送到其他服务器会更加棘手。

社会工程学

攻击者可以欺骗您的用户在 Web 工具控制台中启动一些代码 - 您可以尝试在 Facebook 上打开一个 Web 控制台,看看他们对此做了什么。

新的东西

每天都会发现漏洞,其中一些已发布在公告上,您应该遵循您的堆栈(例如OpenSSL)的漏洞并在适当的情况下进行修补/升级。