Asp.net 乌节:目前存储密码的最佳方法是什么?

Asp.net 乌节:目前存储密码的最佳方法是什么?,asp.net,security,passwords,orchardcms,Asp.net,Security,Passwords,Orchardcms,我目前正在为我们的一个客户开发一个Orchard CMS平台,这是一个约有400名会员的小俱乐部。在另一位客户最近的网站遭到黑客攻击和用户数据泄露之后(作为记录:我们没有开发他们的网站),我们希望为我们的当前和新客户提供最佳的安全性。这并不意味着最好的安全性,我们只是想让网站足够安全,无论在网站中找到什么数据,都不值得攻击者为获取这些数据所做的努力。由于我们这个网站只有一小部分会员,我怀疑它是否有吸引力,但考虑到最近的事件,我们不能太确定 我们正在研究的课题之一是密码存储。我们不想吝啬于此,因为

我目前正在为我们的一个客户开发一个Orchard CMS平台,这是一个约有400名会员的小俱乐部。在另一位客户最近的网站遭到黑客攻击和用户数据泄露之后(作为记录:我们没有开发他们的网站),我们希望为我们的当前和新客户提供最佳的安全性。这并不意味着最好的安全性,我们只是想让网站足够安全,无论在网站中找到什么数据,都不值得攻击者为获取这些数据所做的努力。由于我们这个网站只有一小部分会员,我怀疑它是否有吸引力,但考虑到最近的事件,我们不能太确定

我们正在研究的课题之一是密码存储。我们不想吝啬于此,因为这是安全的重要组成部分。我读过SHA512、BCrypt和其他散列算法,但很难对在线发现的所有不同算法和方法形成一个清晰的概述。这些信息分布在不同的来源,其中一些可以在MSDN上找到,但其中一些只能隐藏在博客帖子和评论中

目前,对密码和其他敏感数据进行哈希和盐析的算法被认为是最好的?哪些应该像瘟疫一样避免呢?

PBKDF2/RFC2898/PKCS#5v2、BCrypt和SCrypt是当前存储密码的“好”方法。截至2014年初,所有其他方面都很糟糕

看,这似乎是一个单轮盐沙-1。真可怜!请参阅,以获取一般性论述

在您的情况下,如果您想坚持使用纯.NET,我会说使用,这是一个PBKDF2-HMAC-SHA-1实现,为它提供一个随机的每个用户16字节的salt,该salt由生成(Orchard用于生成其salt的相同类),在最大预期负载下,尽可能多的迭代次数将刚好低于CPU限制的服务器——这个数字应该是几万


在数据库中存储密码散列、明文(二进制或十六进制字符串或Base64字符串)和迭代次数。应存储itersations的数量,以便以后可以轻松地提高安全性。如果可能的话,还要存储一个“版本”,以便以后可以轻松升级到新算法。

首先,您是否计划为Orchard编写自己的用户部分?我相信,内置成员使用SHA1散列密码。打破SHA1需要一段时间,并且在计算能力上花费了很多。我想你可以放心地假设没有人会打扰你。我们需要的是以下内容:1)自定义用户字段(用于公司名称、功能、电话、地址等内容);2) 活动策划和活动用户注册;3) 以非程序员也能做到的方式添加新内容和事件。我并不担心散列破解,但更担心的是相反的:彩虹表和暴力强迫。此外,根据我读到的文章,SHA-1正逐步被淘汰,取而代之的是SHA-2和SHA-3,因为硬件已经达到了暴力破解是可行的程度。作为后续:SHA-1是为SSL连接之类的东西设计的快速加密。它只通过一次加密。正因为如此,计算大量散列的速度非常快。如果可能的话,我更喜欢使用专为密码保护而设计的算法。散列算法与散列一起保存在数据库中。如果查看MembershipService.CreateUser,您将看到设置算法的代码。您可以使用该代码的修改版本,使用不同的算法创建您自己的用户。感谢您的解释。但这不是我真正的问题,我知道如何改变算法。我想知道我应该使用哪种算法,因为SHA-1远远不是加密密码的最佳算法。