当用户登录我的网站时,他们通过 https 将用户名和密码发送给我。除了 ssl,密码没有特殊的混淆 - 它以明文形式存在于浏览器的内存中。
还有什么我应该做的吗?我应该以某种方式保持它的散列,即使在 RAM 中?
当用户登录我的网站时,他们通过 https 将用户名和密码发送给我。除了 ssl,密码没有特殊的混淆 - 它以明文形式存在于浏览器的内存中。
还有什么我应该做的吗?我应该以某种方式保持它的散列,即使在 RAM 中?
这可以。你不需要做任何其他事情。无需在 RAM 中对其进行散列或混淆处理。
在将密码存储在持久内存中(例如,在数据库中)之前,您应该小心地在服务器端适当地散列密码,并且应该注意使用正确的密码散列方法。参见,例如,如何安全地散列密码?,我应该使用哪种密码散列方法?,最安全的密码哈希算法?,有没有安全专家推荐 bcrypt 用于密码存储?.
如果您想为您的用户提供额外的安全性,您可以采取以下步骤:
使用站点范围的 SSL/TLS。任何通过 HTTP 访问您的站点的尝试都应立即重定向到 HTTPS。
在您的网站上启用HSTS 。这告诉浏览器仅通过 HTTPS 连接到您。贝宝使用它。最新版本的 Firefox 和 Chrome 支持它。
我并不是说你需要做这些事情(尽管站点范围的 SSL/TLS 有很大的不同)。但这些选项可以帮助加强针对某些常见攻击媒介的安全性。
您可以做的另一件事是使用客户端证书。服务器只能通过要求客户端证书来向自己保证没有中间人。否则,他必须相信客户能够正确验证中间人是否存在。这超过了很多服务应该愿意信任的。