Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
asp.net中的表单身份验证Cookie值漏洞_Asp.net_Asp.net Mvc_Authentication_Forms Authentication - Fatal编程技术网

asp.net中的表单身份验证Cookie值漏洞

asp.net中的表单身份验证Cookie值漏洞,asp.net,asp.net-mvc,authentication,forms-authentication,Asp.net,Asp.net Mvc,Authentication,Forms Authentication,在asp.net中,我可以像往常一样使用表单身份验证登录,复制我们的auth cookie值,注销,使用Chrome的“编辑此cookie”插件将cookie人工添加到客户端,刷新(匿名)登录页,然后再次登录。这似乎是一个漏洞-是否有任何方法可以使用标准表单身份验证来修复它,或者我是否必须使用自定义授权属性来覆盖asp.net mvc中现有的属性?您可以使用任何cookie/s来实现这一点。您可以检查/复制任何给定域中的所有cookie,如果需要,还可以进行欺骗。您可以对自己执行此操作,因为这是

在asp.net中,我可以像往常一样使用表单身份验证登录,复制我们的auth cookie值,注销,使用Chrome的“编辑此cookie”插件将cookie人工添加到客户端,刷新(匿名)登录页,然后再次登录。这似乎是一个漏洞-是否有任何方法可以使用标准表单身份验证来修复它,或者我是否必须使用自定义授权属性来覆盖asp.net mvc中现有的属性?

您可以使用任何cookie/s来实现这一点。您可以检查/复制任何给定域中的所有cookie,如果需要,还可以进行欺骗。您可以对自己执行此操作,因为这是您的电脑(或用户登录到电脑)。显然,如果你在一台共享电脑上,这是一个问题(在你所有的信息中)

“复制cookie”的行为实际上是恶意软件试图窃取/劫持您的身份(或某些网站上的当前会话)的一种方式。也就是说,除非你有一些恶意软件,否则你不能只是“复制别人的cookies”


假设
注销
完成,您可以要求用户关闭浏览器,以便将过期的cookie从(文件)系统中删除。

您可以使用任何cookie/s执行此操作。您可以检查/复制任何给定域中的所有cookie,如果需要,还可以进行欺骗。您可以对自己执行此操作,因为这是您的电脑(或用户登录到电脑)。显然,如果你在一台共享电脑上,这是一个问题(在你所有的信息中)

“复制cookie”的行为实际上是恶意软件试图窃取/劫持您的身份(或某些网站上的当前会话)的一种方式。也就是说,除非你有一些恶意软件,否则你不能只是“复制别人的cookies”


假设
注销
完成,您可以要求用户关闭浏览器,以便从(文件)系统中删除过期的cookie。

我认为这本身不是一个bug。在表单身份验证期间发生以下情况

  • 您向服务器提供用户名/密码
  • 服务器验证用户名/密码
  • 如果有效,服务器将向客户端发送加密的身份验证票证(cookie),其中包含过期时间(在web.config表单身份验证部分中设置)和用户名(全部加密)
  • 对于每个需要授权的请求,都会在服务器上解密cookie,检查过期时间,并使用用户名查看是否已授权(或为请求的资源获取该角色)
  • 注销时,cookie的过期时间设置为过去,因此不再是有效的cookie

  • 现在,关于你为什么看到你所看到的。。。您在注销之前正在复制cookie。因此,您复制的cookie从未注册注销(移动过期时间)。重新连接时,您仍然拥有有效的身份验证cookie。现在,如果表单身份验证超时设置为…比方说20分钟…如果复制cookie并等待21分钟,此方法将失败,因为此时,cookie已过期。

    我认为这本身不是一个错误。在表单身份验证期间发生以下情况

  • 您向服务器提供用户名/密码
  • 服务器验证用户名/密码
  • 如果有效,服务器将向客户端发送加密的身份验证票证(cookie),其中包含过期时间(在web.config表单身份验证部分中设置)和用户名(全部加密)
  • 对于每个需要授权的请求,都会在服务器上解密cookie,检查过期时间,并使用用户名查看是否已授权(或为请求的资源获取该角色)
  • 注销时,cookie的过期时间设置为过去,因此不再是有效的cookie

  • 现在,关于你为什么看到你所看到的。。。您在注销之前正在复制cookie。因此,您复制的cookie从未注册注销(移动过期时间)。重新连接时,您仍然拥有有效的身份验证cookie。现在,如果您的表单身份验证超时设置为…比如说20分钟…如果您复制cookie并等待21分钟,此方法将失败,因为此时cookie已过期。

    Cookies始终是可漏洞的,我们对此无能为力。我们能做的就是防止有人偷饼干

    关于ASP.NET MVC,它很好地避免了窃取cookie。作为安全性的一部分,默认情况下它所做的一些主要事情是:

  • 对呈现到视图中的字符串进行编码(如果您使用的是Razor,但不知道其他人),以防止XSS攻击

  • 请求验证(阻止潜在危险数据到达 应用程序)

  • 阻止获取JSON数据的访问

  • 使用防暴助手预防CSRF


  • 关于cookies,微软提供了
    HttpOnly
    功能,这有助于对javascript隐藏cookies。您所说的表单身份验证是一个
    HttpOnly
    cookie,这意味着有人不能通过JavaScript窃取,而且它更安全。

    Cookies总是可漏洞攻击的,我们对此无能为力。我们能做的就是防止有人偷饼干

    关于ASP.NET MVC,它很好地避免了窃取cookie。作为安全性的一部分,默认情况下它所做的一些主要事情是:

  • 对呈现到视图中的字符串进行编码(如果您使用的是Razor,但不知道其他人),以防止XSS攻击

  • 请求验证(阻止潜在危险数据到达 应用程序)

  • 阻止获取JSON数据的访问

  • 使用防暴助手预防CSRF

  • 关于cookies,微软提供了
    HttpOnly
    功能,这有助于对javascript隐藏cookies。您所说的表单身份验证是一种
    HttpOnly
    cookie的意思