asp.net 成员资格是否真的为 Web 应用程序的登录、身份验证和授权提供了安全而强大的解决方案?



我听说 asp.net 成员资格的哈希算法是sha-1,但我在大多数文章中看到它不再安全,我也想知道大多数专业开发人员是否正在使用 asp.net 成员资格,或者他们是否提出了自己的解决方案/实现关于登录,身份验证,系统/项目的授权。

asp.net 成员资格是否真的为 Web 应用程序的登录、身份验证和授权提供了安全可靠的解决方案?:)

问的原因是我想知道开发人员是否真的在他们的项目中使用它。

先生/女士,您的回答将有很大帮助。

如果我正在编写用户数量适中的内部应用程序,那么我通常依赖于 memberhsip asp.net。它很熟悉,我知道如何快速启动和运行它。其他开发人员也相当了解它,因此不需要解释。组织通常也希望控制用户帐户。

另一方面,如果您正在创建一个公共站点,并且需要在进行贡献之前对用户进行身份验证(例如堆栈溢出),则可能需要考虑实现OpenId,以便用户不必使用您的域创建新帐户。他们可以使用Google/Facebook/Twitter。有一些库可以帮助您入门。

default hash algorithm

.NET 4.0 中更改为 SHA256。因此,如果您使用的是 .NET 4.0,则非常安全。

您还可以在 web.config 中指定哈希算法:

<system.web>
    <machineKey validation="SHA256" />
    <membership defaultProvider="myMembership" hashAlgorithmType="SHA256">
    ...
</system.web>

实际上,这是 .NET 4.0 中的一个重大更改。因此,如果你在 .NET 3.5 中有一个现有应用程序并升级到 .NET 4.0,则使用 SHA1 进行哈希处理的密码可能不再在 .NET 4.0 中使用,除非将算法类型更改回 SHA1。

其实不然。 ASP.NET 成员资格提供程序是设计失败。

  1. 它强制您使用预定义的域模型实体而不是使用你自己的。
  2. 无法轻松互换(每个公司使用不同的提供商或不同形式的身份验证)
  3. 预定义的成员资格提供程序抽象是失败的类设计。(出参数 ? - 是的,请测试它)

去实现你自己的提供程序。对于密码,请选择您的哈希算法(sha1,sha512...)。

完成实现后,使用 FormsAuthentication 类将其与提供程序集成。

最新更新