asp.net-mvc – FormsAuthentication.SetAuthCookie vs FormsAuth
|
问题#1:
我的意思是,如果有人试图修改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 Core WebApi将错误消息返回给AngularJS $http prom
- asp.net – 如何通过LINQ获得第一级的孩子
- 在ASP.NET中设置ECommerce
- 身份验证 – 如何为Asp.NET MVC 5创建ClaimsIdentity对象?
- asp.net-mvc-2 – Asp.net Mvc显示String的模板,但现在每个
- asp.net – 回发时超过最大请求长度异常
- asp.net-mvc-4 – 多个单选按钮组在MVC 4剃刀
- asp.net-mvc – 跨项目共享剃刀视图
- asp.net下创建、查询、修改带名称空间的 XML 文件的例子
- .net – SqlDataSource与ObjectDataSource
