想象一下,你有一个只有2个页面的简单网站:login.aspx和secret.aspx . 除了ASP.net表单身份验证和login.aspx上的ASP.net登录服务器控件之外,您的站点都是安全的 . 详情如下所示:
-
该站点配置为使用SqlMembershipProvider
-
该网站拒绝所有匿名用户
-
Cookie被禁用
显然有很多事情需要考虑安全性,但我对.net框架附带的零代码开箱体验更感兴趣 .
如果为了这个问题,唯一的攻击点是login.aspx中的用户名/密码文本框,黑客是否可以注入允许他们访问我们的secret.aspx页面的代码?
Microsoft提供的零代码开箱即用体验有多安全?
8 回答
您仍然有一些未考虑的变量:
安全性进入您的成员资格提供程序使用的数据存储区(在本例中为Sql Server数据库) .
在同一IIS中托管的其他站点的安全性
托管站点所涉及的计算机的一般网络安全性,或托管站点的同一网络
托管该站点的计算机的物理安全性
您是否使用适当的措施来加密身份验证流量? (HTTPS / SSL)
并非所有这些问题都是MS特定的,但它们值得一提,因为如果不加以处理,它们中的任何一个都很容易超过您所询问的问题 . 但是,出于你的问题的目的,我会假设它们没有任何问题 .
在那种情况下,我非常确定表单身份验证能够完成它应该做的事情 . 我不认为那里有任何当前活跃的漏洞利用 .
据我所知,密码将以纯文本形式发送(但已编码) . 因此,最重要的是在登录屏幕上使用HTTPS协议 .
另一个设置对我来说似乎是安全的 .
使用HTTP基本身份验证(.NET基本表单身份验证正在使用),为了查看secret.aspx页面,浏览器必须发送用户名和密码的Base64编码串联 .
除非您使用SSL,否则任何有权在服务器和浏览器之间扫描网络的人都可以阅读此信息 . 他们可以解码用户名和密码 . 他们将来可以重播用户名和密码以访问secret.aspx页面 .
也就是说,除非您使用SSL,否则有人也可以使用secret.aspx扫描其他人的整个会话,因此实际上,他们也可以访问该页面的内容 .
好吧,试着看看幕后:
所以你的力量安全性(开箱即用)取决于您使用的密码保护格式策略:
如果您使用明文,则很容易入侵您的系统 .
另一方面,使用Encrypted,安全性取决于对计算机的物理访问(或至少是machine.config) .
使用哈希密码(默认值)将保证安全性取决于:a)RNGCryptoServiceProvider类的哈希策略的已知反转和b)访问数据库以危害随机生成的盐 .
我不知道是否可以使用某种彩虹表黑客进入默认的Hash-base系统 .
有关更多详细信息,请查看此链接:http://msdn.microsoft.com/en-us/library/aa478949.aspx
如果通过成员资格提供程序正确配置,您将具有足够的安全级别 . 除此之外,可以通过规范攻击访问该页面,但这与您的一般安全性有关 . 我做了关于使用Security Enterprise Application Blocks的演讲 . 您可能希望阅读这些内容并在实现站点安全性时进行调查,并了解常见的安全威胁 . 鉴于您是在开放式共享网络上,并且完全安全将是由军方全天24小时保护的安全防护服务器(基于Orange书的DoD _2591983级安全性),任何站点都不会100%不可攻击 . 但是,成员资格提供程序的开箱即用功能(如果配置正确)将提供大量安全性 .
编辑:是的,我同意其他评论,至少登录屏幕上的HTTPS是给定的,如果你想保护数据包嗅探器和网络监视器的用户名/密码 .
Asp.Net支持无cookie会话,如this blog post shows . 它使用URL中的标识符来跟踪用户,而不是会话cookie .
我不确定这是多么安全,但我认为这对于强制身份字符串的难度是安全的 .
看起来它或多或少开箱即用,但是当重定向用户并希望维护会话状态时,您必须包含会话ID . 博客文章展示了如何做到这一点,以及网上的许多其他文章 .
以下是Microsoft关于此主题的两篇好文章:
How To: Protect Forms Authentication in ASP.NET 2.0
INFO: Help Secure Forms Authentication by Using Secure Sockets Layer (SSL)
URL上的Cookie不够安全,它有很多不同的问题(特别是如果你有任何引用漏洞)和HTTPS的使用 .