asp.net – FormsAuthentication:是否安全?
使用FormsAuthentication构建到asp.net,创建一个登录系统,为身份验证的用户创建一个cookie是非常快速和容易的:
FormsAuthentication.SetAuthCookie(uniqueUsername,false); 与Web.Config文件中的一些代码配对: <authentication mode="Forms"> <forms loginUrl="Login.aspx" timeout="30" defaultUrl="Dashboard.aspx" protection="All" /> </authentication> <authorization> <deny users="?" /> </authorization> 这将使所有请求弹回到Login.aspx,直到用户被批准,并使用SetAuthCookie()方法调用创建了一个cookie。 这是否足够安全? 这种方法每次都需要重新验证额外的开销,但这也意味着我没有在客户端上存储任何服务器数据。 我的担心 我认为我过于偏执,使用的加密类型和级别是足够的,但是以为我会得到一些专家的意见。 解决方法
你不应该使用这种方法。密码不应存储在认证券中。原因是如果认证券遭到入侵,则攻击者具有用户的密码。这种风险可以通过加密身份验证券cookie来缓解,但我认为您是以纯文本形式存储cookie。
正如Shiraz指出的那样,如果您创建一个持久性的cookie,cookie只会保留在客户端计算机上。 (SetAuthCookie的其中一个参数指示是否创建此类Cookie。 即使有人打破了加密方案来修改cookie,以提供不同的用户名,因为身份验证单也被数字签名,这意味着ASP.NET可以检测cookie的内容是否已被修改。要创建数字签名,攻击者将需要知道服务器使用的盐,如果用户可以确定这一点,这意味着他可以访问您的Web服务器的文件系统,所以现在你有更大的问题。 另一件需要了解的是,认证券有一个到期期限,这对票证的有效期有一定的限制。因此,即使有人窃取用户的Cookie,攻击者必须使用该被盗票的时间将根据您为表单身份验证系统指定的超时值(默认为30分钟)而受到限制。 总而言之,官方ASP.NET表单认证系统将比单独开发人员能够实现的安全性更加安全。开发人员应该努力使用表单认证系统,而不是自己的解决方案,包括更好的安全性,不必重新开发轮子,采用标准做法,因此加入团队的其他开发人员没有这么大的学习曲线起来加快速度,等等。 有关表单身份验证系统的详细细节以及票证的安全性如何,各种< form>配置设置工作等,见:Forms Authentication Configuration and Advanced Topics。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ASP脚本中的Python 500服务器错误
- .netcore 实现基于 cron 表达式的任务调度
- asp.net-mvc – 使用StructureMap / ASP.MVC / Visual Stud
- asp.net-mvc-3 – 剃刀视图引擎,如何在html之间写入?
- asp.net-mvc – 纯粹的DDD方法可以和NHibernate一起使用吗?
- .net – 如何获取客户端DotNetOpenAuth.OAuth2返回的错误消
- asp.net cookie,身份验证和会话超时
- asp.net – 在部署到SharePoint时,ObjectDataSource无法找到
- asp.net-web-api – ASP.NET WEB API 2 OWIN身份验证unfpor
- asp.net – 从Google财经,雅虎金融或交易所获取股票报价