asp.net-mvc – FormsAuthentication.SetAuthCookie vs FormsAut
问题#1:
setAuthCookie是否比FormsAuthentication.Encrypt(ticketVariable)更安全? 我的意思是,如果有人试图修改setAuthCookie创建的cookie,通过修改用户名,我想这会违反后续调用的身份验证? 问题2: 干杯 解决方法
SetAuthCookie基本上使用提供的用户名&创建一个新的FormsAuthenticationTicket.持久性选项,序列化它,FormsAuthentication.Encrypt(),并在Response.Cookies集合中设置它. SetAuthCookie和GetAuthCookie都间接调用FormsAuthentication.Encrypt.
在后续请求中,FormsAuthentiationModule处理AuthenticateRequest事件.如果它看到一个cookie(它可能已经过期),它会尝试使用machineKey解密它的值(它可能已被篡改)并将其反序列化为FormsAuthenticationTicket(它可能已损坏).如果没有(坏东西)发生,则票证包含用户名,发布日期,到期信息等.如果票证尚未过期,则创建IIdentity和IPrincipal并将其分配给HttpContext.Current.User和Thread. CurrentThread.Principal.在.NET 4.5及更高版本(我认为)中,这是基于声明的(ClaimsIdentity,ClaimsPrincipal).在此之前,我认为它是一个(GenericPrincipal,FormsIdentity). 用户端的任何篡改都将导致请求被视为匿名.它将无法解密.唯一会影响此验证的事情是,如果web.config / machine.config中的machineKey以某种方式落入攻击者的手中,或者如果框架代码中存在错误(搜索Padding Oracle的历史示例) ). 除此之外,另外需要注意的是会话劫持.例如,如果有人在公共wifi上窃取你的cookie,他们就可以将它呈现给服务器,服务器的行为就好像是你.这通常涉及网络流量嗅探.出于这些原因,最佳做法是在整个站点中使用SSL,并将cookie设置为仅HTTP和Secure(仅通过https连接呈现)在web.config / system.web / authorization / forms中. HTTP仅表示它不可用于客户端Javascript. HTTP Only和Secure实际上仅指HTTPS.这仅适用于整个站点上使用SSL的情况. FormsAuthentication可以在移动Web浏览器上正常运行.它只需要客户接受cookie.据我所知,所有移动设备都允许这样做. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 如何在Win Server 2k8和IIS7上修复404.17错误
- asp.net-mvc – 使用令牌重置Identity 2.0 sms密码
- ASP.NET Core缓存静态资源
- asp.net-core – AspNetCore Abstractions无法加载
- Response.Redirect在ASP.NET中将数据POST到另一个URL
- asp.net-mvc – 在github中避免使用ASP.NET密码?
- asp.net-mvc – ASP.NET MVC和LINQ一般问题
- asp.net – 通过代码隐藏结果??在错误类型(System.Web.UI.H
- asp.net – MVP MVC和MVVM之间的区别
- PagesSection.ValidateRequest是否足以阻止asp.Net中的XSS
- asp.net-mvc – 使用自定义值呈现Html.Hidden帮助
- VS2017、VS2019没有Setup安装项目(Visual Studi
- 访问被拒绝从远程计算机读取Perfmon计数器(Asp.N
- 将ASP.NET应用程序本地化为普通话
- asp.net – MapRoute和MapPageRoute有什么区别?
- asp.net-mvc-3 – 无法加载文件或程序集“System
- asp.net-core – 带有ASP.NET身份3的JWT承载令牌
- asp.net-mvc – Razor方法Chaining / Fluent不适
- 有什么好的参考或工具可用于将ASP转换为ASP.NET?
- asp.net-mvc – Azure网站和ASP.NET,在应用程序池