ASP.NET Forms身份验证和持久身份验证Cookie安全性
当我们在任何ASP.NET框架(ASP.NET MVC,Web窗体等)中使用ASP.NET Forms Authentication时,我们会在客户端的浏览器中保留身份验证cookie.作为最佳实践,我们将cookie设置为HttpOnly并且安全.我们还通过SSL进行所有交易.无论我们使用何种机制来验证用户(OAuth,ASP.NET成员资格提供程序等),我们仍然需要保持身份验证以获得更好的用户体验.
有了所有这些,我假设有人仍然可以从客户端浏览器中获取cookie并使用这些auth cookie值发出请求.服务器无法检测到这种情况,我们会将受保护的数据提供给其他人. 有人认为我想降低这里的风险是每当他/她试图采取一些严肃的行动(例如更改电子邮件地址,访问个人资料信息等)时询问客户的密码,但这并不能解决任何东西,对客户来说都很烦人. 对于这类问题,您有任何积极关注的方法吗?或者在客户端浏览器中保持身份验证的最佳方法是什么? 解决方法
你正在做一切正确的事情.
如果您正在使用成员资格提供程序,那么cookie将仅标记为HTTP(如您所述),因此无法通过客户端脚本(如恶意的XSS)访问该cookie. 如果您已将cookie标记为安全,那么我假设您已将表单身份验证中的“RequireSSL”标志设置为true.通过这样做,cookie不会被发送到任何不通过HTTPS发送到服务器的请求,所以即使你不小心插入HTTP请求(浏览器应该警告用户无论如何嵌入的内容一个HTTPS页面),不会发送cookie. 你可以做的唯一的另一件事 – 这并不能提供你所拥有的很多防御,但这是一个很好的做法 – 也是使用HSTS.我在OWASP Top 10 for .NET developers part 9: Insufficient Transport Layer Protection中讨论这个问题,作为确保通过安全通道继续发送请求的另一种方法. 如果没有对会员提供商进行一些严肃的重新设计,那么你可以做的事情真的不多.您可以将会话绑定到IP,如果它发生更改则不接受请求,但这可能会导致问题(即IP会更改并且不会保护您免受同一地址上的多个人的攻击).您还可以创建浏览器的指纹(即在请求标头中发送的所有内容)并确保后续请求匹配,但我们在此处详细介绍. 但最终,安全性应根据其所保护的资产的价值和恶意活动的可能性进行调整.你没有说你正在保护什么,但如果它是一个金融系统,你会比在博客上使用简单的评论引擎更长. 总而言之,看起来你做得很好,只考虑你在所保护的价值背景下实施的措施的适当性.哦 – 如果您使用SQL成员资格提供程序进行凭据存储,请确保您阅读Our password hashing has no clothes然后停止这样做! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – IIS不下载胡须文件
- asp.net – 在VS2008发布网站后,全球资源无法解决
- asp.net-mvc-3 – 尝试加载64位C/C++LI程序集时出现ASP.NET
- 将用户添加到角色ASP.NET身份
- asp.net-mvc – 用于多个复选框表单的ASP.Net MVC6语法
- asp.net – 为什么在添加新的响应标头时会出现“平台不支持
- asp.net-mvc-3 – DTO可以嵌套DTO吗?
- asp.net-mvc-3 – ASP.NET MVC3 – 分开的程序集中的区域
- asp.net-mvc – 如何获取针对Razor View Engine的IntelliSe
- 为什么要使用流畅的验证而不是ASP.NET MVC验证
- asp.net – 在MVC中控制SQL注入
- asp.net – 为什么在设置@Page masterPageFIle时
- 在扩展asp.net Web控件时,应该在哪个事件中注入其
- 谈谈在.NET Core中使用Redis和Memcached的序列化
- asp.net – 具有复合键的Odata v3 Web Api导航
- asp.net-mvc – Asp.net Web api异常仅在IIS部署
- asp.net-mvc-3 – 什么冒号(:)意味着在c#中定义
- ASP.NET Core 3.1 WebApi+JWT+Swagger+EntityFra
- PagesSection.ValidateRequest是否足以阻止asp.N
- asp.net-mvc-3 – 如何调试AutoMapper“缺少类型