想象一下您有一个只有 2 个页面的简单网站:登录.aspx 和秘密.aspx。仅使用 ASP.net 表单身份验证和 login.aspx 上的 ASP.net 登录服务器控件来保护您的站点。详情如下所示:

  • 该站点配置为使用 SqlMembershipProvider
  • 该网站拒绝所有匿名用户
  • Cookie 已禁用

显然,关于安全性有很多事情需要考虑,但我对 .net 框架附带的零代码开箱即用体验更感兴趣。

对于这个问题,如果唯一的攻击点是 login.aspx 中的用户名/密码文本框,那么黑客是否可以注入代码来允许他们访问我们的 Secret.aspx 页面?

Microsoft 提供的零代码开箱即用体验有多安全?

有帮助吗?

解决方案

您仍然有一些未考虑的变量:

  • 会员资格提供商使用的数据存储(在本例中为 Sql Server 数据库)的安全性。
  • 同一 IIS 中托管的其他站点的安全性
  • 托管站点所涉及的计算机或托管站点的同一网络上的计算机的一般网络安全性
  • 托管站点的计算机的物理安全
  • 您是否使用适当的措施来加密身份验证流量?(HTTPS/SSL)

并非所有这些问题都是 MS 特有的,但它们值得一提,因为如果不加以处理,其中任何一个问题都可能很容易超过您所询问的问题。但是,出于您提出问题的目的,我假设它们没有任何问题。

在这种情况下,我很确定表单身份验证会完成它应该做的事情。我认为目前没有任何活跃的漏洞利用。

其他提示

据我所知,密码将以纯文本形式发送(但经过编码)。因此,最重要的是在登录屏幕上使用 HTTPS 协议。

其他设置对我来说似乎是安全的。

通过 HTTP 基本身份验证(即 .NET 基本表单身份验证所使用的身份验证),为了查看 Secret.aspx 页面,浏览器必须发送用户名和密码的 Base64 编码串联。

除非您使用 SSL,否则任何有权扫描服务器和浏览器之间网络的人都可以读取此信息。他们可以解码用户名和密码。他们可以在将来重播用户名和密码来访问 Secret.aspx 页面。

也就是说,除非您使用 SSL,否则某人还可以使用 Secret.aspx 扫描其他人的整个会话,因此实际上,他们也可以访问该页面的内容。

好吧,尝试看看幕后:

密码保护

将用户名,密码和其他身份验证信息存储在数据库中的应用程序绝不应以明文存储密码,以免被盗或妥协数据库。为此,SQLMembersHippRovider支持密码和密码答案的三种存储格式(“编码”)。从密码Formating配置属性初始化的提供商的密码Format属性确定使用了哪种格式:

  • 成员Hippasswordformat.clear,以明文存储密码和密码答案。
  • MENSTHIPPASSWORDFORMAT.HASHED(默认值),该(默认值)存储从密码和密码答案中生成的盐hashes。盐是由.NET Framework的RNGCryptoServiceProvider类产生的随机128位值。每个密码/密码答案对都使用此唯一值盐,并且盐存储在ASPNET_MEMBERSHIP表的密码SALT字段中。放哈密码和盐的结果存储在密码字段中。同样,放哈密码答案和盐的结果存储在密码架字段中。
  • MENSTHIPPASSWORDFORMAT.ENCRYPTED,它存储了加密的密码和密码答案。SQLMembersHippRovider使用对称加密/解密键在“配置”部分的解密基属性中指定的对称加密/解密密钥,以及在配置部分的解密部分中指定的加密算法。如果要求将密码和密码答案加密,并且是否设置了自动化,则SQLMembersHippRovider会引发异常。这样可以防止包含加密密码和密码答案的会员数据库,如果移至另一台服务器或其他应用程序,则会变得无效。

因此,您的安全强度(开箱即用)将取决于您使用的密码保护格式策略:

  • 如果您使用明文,显然更容易侵入您的系统。
  • 另一方面,使用加密,安全性将取决于对您的计算机(或至少 machine.config)的物理访问。
  • 使用哈希密码(默认)将保证安全性,具体取决于:a) 已知逆转 RNGCryptoServiceProvider 类的哈希策略;b) 访问数据库以破坏随机生成的盐。

我不知道是否可以使用某种彩虹表破解默认的哈希基系统。

欲了解更多详细信息,请查看此链接:http://msdn.microsoft.com/en-us/library/aa478949.aspx

如果通过会员提供商正确配置,您将拥有足够的安全级别。除此之外,对该页面的访问可能可以通过规范攻击进行访问,但这与您的总体安全有关。我做了一个关于使用 安全企业应用程序块. 。您可能需要阅读这些内容并在站点上实施安全性时进行研究,并了解常见的安全威胁。没有一个网站是 100% 不可破解的,因为您处于开放的共享网络上,并且总体安全性将是一台未插电的服务器锁定在由军方 24/7 全天候守卫的保险箱中(大约是国防部“A”级安全性,基于橙皮书) )。但是,会员资格提供者的开箱即用功能(如果配置正确)将提供良好的安全性。

编辑:是的,我同意其他评论,如果你想保护用户名/密码免受数据包嗅探器和网络监视器的攻击,至少在登录屏幕上使用 HTTPS。

Asp.Net 支持无 cookie 会话,如 这篇博文显示. 。它使用 url 中的标识符来跟踪用户,而不是会话 cookie。

我不确定这有多安全,但我认为它是安全的,因为很难暴力破解身份字符串。

它看起来或多或少是开箱即用的,但是当重定向用户并想要维护会话状态时,您必须包含会话 ID。该博客文章以及网络上的许多其他文章展示了如何做到这一点。

URL 上的 Cookie 不够安全,它存在很多不同的问题(尤其是引用者泄漏,如果有的话)以及 HTTPS 的使用。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top