【问题标题】:Retroactively encrypting/hashing stored (plaintext) user credentials追溯加密/散列存储的(明文)用户凭据
【发布时间】:2013-09-09 17:30:08
【问题描述】:

我目前正在从事一个项目,我正在用 ASP.NET 重写一个旧的(1990 年代后期)Web 应用程序。该应用程序的一部分是用户身份验证系统,用于访问网站上的几个页面。用户凭据(用户名、密码等)存储在数据库表中。

这都是非常标准的,但是在使用这个数据库时,我发现,令我震惊的是,这些数据是以明文形式存储的。

我想知道提高这个不安全系统的安全性的最佳方法是什么。有没有一种简单的方法来获取纯文本数据,加密(或散列)它,然后重新插入它?我可以使用 .NET Forms 身份验证来促进其中的任何一项吗?这是在新应用中进行用户身份验证的好选择吗?

谢谢!

【问题讨论】:

  • 附带说明,加密存储的密码通常是个坏主意。散列它们是迄今为止的首选。
  • 扩展@Aurand 的评论:用盐散列被认为是常见的做法,没有盐的散列几乎和加密一样糟糕。否则黑客要找回密码太容易了。
  • 这绝对是有道理的。如果没有太多额外的工作,我更愿意散列密码。我可以像@Garrison Neely 的回答一样实现这个吗?

标签: asp.net sql security encryption passwords


【解决方案1】:

如果您在 Windows 网络上,我会使用 Windows Auth,它使用 Active Directory。这将允许您的系统管理员组/个人管理有权访问该应用程序的人员。

如果 Windows Auth 不适合您,Forms Auth 是个好主意。

如果他们不给您时间来实现任何一个身份验证框架,我肯定会加密数据库上的密码。编写一个控制台应用程序并使用此处找到的信息加密密码:Encrypt and decrypt a string

然后您需要修改现有应用以检查加密密码而不是明文密码。

【讨论】:

    猜你喜欢
    • 2018-09-19
    • 1970-01-01
    • 1970-01-01
    • 2013-07-25
    • 2013-07-23
    • 2013-11-19
    • 1970-01-01
    • 2021-12-16
    • 1970-01-01
    相关资源
    最近更新 更多