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

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

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

【问题讨论】:

    标签: asp.net cookies forms-authentication


    【解决方案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,您会发现它

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-12-12
          • 2013-09-16
          • 2018-10-24
          • 1970-01-01
          • 2010-12-26
          • 2018-12-08
          • 1970-01-01
          • 2013-05-01
          相关资源
          最近更新 更多