首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在服务器端杀死.ASPXAUTH cookie?

如何在服务器端杀死.ASPXAUTH cookie?
EN

Stack Overflow用户
提问于 2016-09-24 00:52:22
回答 2查看 1.2K关注 0票数 5

我不是一个开发人员,而是一个渗透测试员。当我在一个基于.NET框架的网站上执行pentest测试时,我报告了一个“不正确的会话管理”issue.The用户正在使用.ASPXAUTH cookie进行身份验证。当用户注销时,客户端浏览器中的.ASPXAUTH Cookie值将设置为空白。但是,如果您使用相同的.ASPXAUTH,请手动将其放入浏览器中,并刷新直接对用户进行身份验证的页面。

我建议开发人员在用户注销后立即销毁服务器端的.ASPXAUTH cookie。但他们建议cookie和会话相关的东西完全由框架管理,没有办法在服务器端终止它。

那么有没有办法杀死服务器端的.ASPXAUTH呢?

提前谢谢你

EN

回答 2

Stack Overflow用户

发布于 2016-09-24 00:56:10

那么有没有办法杀死服务器端的.ASPXAUTH呢?

不,没有办法这样做,因为ASP.NET FormsAuthentication与服务器上的任何状态都不相关。这是它的一个弱点。您可以将此cookie与将在服务器上持久化的会话状态关联起来。这样,为了进行身份验证,只有一个有效的表单身份验证cookie是不够的,除此之外,它还应该与服务器上的某个状态相关,这些状态可以在您想要的任何时候(例如,注销时)失效。在这种情况下,用户从网站注销后,将无法再使用.ASPXAUTH cookie,假设他在进行身份验证时捕获了cookie的值。

票数 5
EN

Stack Overflow用户

发布于 2016-09-24 01:19:18

稍微扩展一下Darin的答案,Web Forms Cookie身份验证是无状态的。你的客户说框架在幕后做了很多“魔术”,这是正确的。然而,这并不是说客户端不能对此做些什么。

默认情况下,Forms Auth cookie是无状态的。它包括某种标识符(用户名、用户id,这取决于开发人员),仅此而已。您可以在cookie上设置许多属性(是会话cookie、有效时间长短等),但这不会影响如何处理cookie的内容。cookie的内容随后被机器密钥加密和MACed,因此它们不能被篡改,但这并不妨碍它们是便携式的或可重放的。

如果需要的话,客户端可以继续使用表单身份验证,他们只需要从所有的魔术中退一步。

我猜想他们在暗地里做类似于FormsAuthentication.SetAuthCookie的事情。取而代之的是,他们可以创建一个允许包含用户提供的数据的FormsAuthenticationTicket。这些数据可以是与会话(不一定是HTTP会话)相关的数据。然后使用FormsAuthentication.Encrypt对票证进行加密,它将返回一个cookie,可以在成功的身份验证响应时设置该cookie。

当页面加载时(或者在Global.asax的Application_AuthorizeRequest中更好),它们可以从请求中获取cookie,调用FormsAuthentication.Decrypt来解密身份验证cookie,并检查用户数据是否与会话匹配。

当用户显式注销时,清除该用户的会话,使其不再与cookie匹配。那么,对用户数据的检查应该拒绝该cookie,并强制它们获取新的cookie。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39665893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档