什么是 ASPXAUTH cookie?

Posted

技术标签:

【中文标题】什么是 ASPXAUTH cookie?【英文标题】:what is ASPXAUTH cookie? 【发布时间】:2010-09-30 05:21:30 【问题描述】:

在使用 ASP.Net 表单身份验证时,我遇到了 .ASPXAUTH cookie。我有几个问题:

这个 cookie 的用途是什么? 这个 cookie 的位置是什么?

【问题讨论】:

【参考方案1】:

ASPXAUTH cookie 用于确定用户是否经过身份验证。

至于 cookie 的位置,这取决于您的浏览器。如果您使用的是 Firefox,您可以通过单击工具 -> 选项 -> 隐私来查看 cookie。然后向下滚动到域并展开它以查看 cookie 及其值。该值使用机器密钥(位于服务器的 machine.config 或 web.config 文件中)加密,因此查看客户端上的 cookie 不会真正为您提供任何信息。您可以使用以下命令解密/查看服务器端的值:

HttpCookie authCookie = Request.Cookies[FormsAuthentication.FormsCookieName];//.ASPXAUTH
FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value);

authTicket 有这些字段:

“ASPXAUTH 基本上是用来维护 ASP.NET 会话状态”的说法不正确。 ASP.NET 发出一个完全不同的 cookie,名为 ASP.NET_SessionId,用于跟踪会话状态。

【讨论】:

在 Firefox v8.0 上,cookie 的位置如下:工具 -> 页面信息 -> 安全 -> 查看 cookie 在同一个安全选项卡中,有一个“查看保存的密码”按钮,令我惊讶的是,我能够以纯文本形式查看我使用 Firefox 浏览的各种网站的所有密码。尽管浏览器必须以编码格式将其存储在磁盘上,并且仅通过解码显示以供您参考,但此选项确实是我能想到的安全威胁。如果任何黑客可以使用相同的算法并使用 javascript 读取这些 cookie,尽管该算法泄漏的可能性很小,因为它可能涉及一些只有浏览器代码知道的密钥。 获取用于在 http 请求的 cookie 集合中存储 asp.net 会话 ID 的密钥名称是 C# 代码: var aspNetSessionState = new System.Web.Configuration.SessionStateSection(); var aspNetSessionCookieName = aspNetSessionState.CookieName; Application_PostAuthenticateRequest 中,Request.IsAuthenticated 为真,但 .ASPXAUTH 在我的 HttpContext.Current 中没有价值。请求.Cookies。我使用 sessionState。 我创建了一个 MVC 项目,运行它。注册账号,然后登录。并检查 chrome 开发工具中的 cookie 有一个 Aspnet.ApplicationCookie。然后在登录操作中添加一行:FormsAuthentication.SetAuthCookie(model.Email, true);再次登录并检查了 chrome 开发工具中的 cookie,这一次显然是 ASPXAuth。那么两者有什么区别呢?【参考方案2】:

实际上,.ASPXAUTH cookie 并不能准确地告诉您用户何时真正通过身份验证。当用户退出应用程序时,.ASPXAUTH cookie 将从浏览器中删除。但是,如果您在短时间内返回该站点(表单身份验证 cookie 超时),并使用以下内容编辑新的 ASP.NET_SessionId cookie:

将“名称”字段从“ASP.NET_SessionId”更改为“.ASPXAUTH” 将“value”从 24 字符 sessionID 更改为旧的 448 字符身份验证字符串

刷新后,您将能够假定已通过身份验证的用户的身份,而无需再次从技术上重新进行身份验证。 (再次假设您在 .ASPXAUTH 加密身份验证字符串中存储的特定超时内执行此操作)

一个好的blog 帖子更详细地解释了这个问题。一种可能的解决方案是将 .ASPXAUTH 与 ASP 会话耦合。

【讨论】:

【参考方案3】:

如果用户与 html 登录 URL 的交互允许 TSWPPserver 建立用户的身份,远程服务器应该生成一个 cookie 来识别用户并允许对服务器进行身份验证。 cookie 的内容应该被签名和加密。这个cookie的具体实现包括签名和加密算法依赖于TSWPP服务器的实现,因为只需要服务器解析cookie的内容。如果服务器实现了 cookie,则 cookie 必须在 HTTP 有效负载中返回,其 Content-Type 为“application/x-msts-webfeed-login”。

http://msdn.microsoft.com/en-us/library/ee920427.aspx

【讨论】:

【参考方案4】:

在 Chrome 浏览器上 1.开发者工具-F12 2.找到应用程序选项卡 3.指向cookie的左窗格 如果登录应用程序中可用会话的 ASPXAUTH cookie,您会发现它

【讨论】:

以上是关于什么是 ASPXAUTH cookie?的主要内容,如果未能解决你的问题,请参考以下文章

使用 protection=validation 解密 .ASPXAUTH Cookie

在保护 ASPXAUTH 和 ASP.NET_SessionId cookie 之后,这是正确的行为吗?

Simplemembership ASPXAUTH cookie 在两个单独的 Web 项目上进行验证

cookie 是啥,它有啥用

cookie是 啥意思

cookie是啥 cookie指的是啥