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.net-core-mvc – 如何从任何ASP .Net Core类访问当前的
- 在asp.net中访问服务器端的输入类型文件
- asp.net – 为什么我不能使用NuGet删除包?
- 从未调用ASP.NET Web API自定义JsonConverter
- asp.net – 自定义部分的Web配置转换
- asp-classic – 如何在经典的asp中读取文本文件
- asp.net – ASP .NET检查会话
- asp.net – Chrome网络标签中的延迟测量
- asp.net-mvc – 将默认日期格式应用于ASP.NET MVC 3应用程序
- asp.net-mvc – ASP.NET MVC 4在调试模式下捆绑js文件
- asp.net-mvc-4 – ASP.NET MVC 4自定义权限属性
- ASP.NET MVC2与实体框架4 – AsEnumerable()或To
- ASP.NET中的自定义元素与自定义子元素
- asp.net-mvc – 强大类型的ASP.NET MVC与ADO.NET
- asp.net-mvc-3 – 在MVC3中使用Html.LabelFor的表
- 启动ASP.NET窗体身份验证
- asp.net-mvc – 接受逗号和点作为小数分隔符[重复
- asp.net-mvc-4 – 使用KNOCKOUT.JS和ASP.NET MVC
- IIS7返回的日期标头是错误的
- asp.net-core – RemoteIpAddress始终为null
