security - 如何在现有 Web 应用程序中逐步淘汰密码哈希算法?

标签 security web-applications encryption password-protection

很多questionsasked关于hashing (网络)应用程序中的密码,但我遇到了不同的问题。我知道我当前正在开发的应用程序做得不够安全(只是sha1没有盐或任何东西),但是很难改变这一切突然。

我必须找到一种方法来为所有(± 50.000)用户实现新算法。我一直在考虑一些解决方案,但没有一个听起来正确。

1) 使用新密码向用户表添加第二列。每次用户通过身份验证时,我都会使用新的哈希值存储密码并丢弃旧的密码。这实际上意味着 sha1 需要数年时间才能逐步淘汰。

1.1) 执行上述操作,但刺激用户重新登录我们的系统以进行安全更新,但这确实感觉像是承认存在(预先)存在的安全漏洞。这不会符合我的管理层的喜好。

2) 重新验证所有用户并丢弃所有密码。这是非常严格的,也是用户背后的一个痛点。

你会如何解决这个问题?

最佳答案

您可以通过使用 sha1 哈希作为新的改进哈希实现的输入来扩展现有解决方案,您可以在其中添加盐等。然后,新解决方案将包括 sha1 步骤以及您可能想要的任何改进。

通过这种方式,您可以根据已有的哈希值计算新的哈希值,同时改进解决方案。

关于security - 如何在现有 Web 应用程序中逐步淘汰密码哈希算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25069989/

相关文章:

java - 在 Java 中序列化 BigInteger,用 Botan 反序列化?

javascript - Meteor 中的加密

php - 如何放宽 PHP 的 open_basedir 限制?

android - 面向 iOS、Android 和 WP7 的 Web 应用程序?

javascript - 是否可以使用用户先前选择的内容重新填充文件选择表单字段

web-applications - Web应用程序设计/编程中的项目步骤

java - 如何启动 Play 应用程序的两个实例?

encryption - 轻量级加密 key 交换协议(protocol)

security - "local service"帐户下运行的服务可以在哪里保存其状态

security - RESTful 身份验证作为一种状态形式