.NET 使用身份验证模式的“安全”cookie = 无

Posted

技术标签:

【中文标题】.NET 使用身份验证模式的“安全”cookie = 无【英文标题】:.NET 'secure' cookies using authentication mode = none 【发布时间】:2014-07-31 07:04:25 【问题描述】:

在我的 web.config (IIS6.1 asp.net 4.0) 中:

  <system.web>
    <authentication mode="None"/>
    <httpCookies httpOnlyCookies="true" requireSSL="true" />
  </system.web>

使用 https 浏览到 localhost/任何东西都可以正常工作。所有请求都成功完成。我的问题是我得到的 cookie 没有设置“安全”标志。 HTTP 标志已设置。

如何获得安全标志?我的 IPrincipal 实现?

谢谢。

【问题讨论】:

看看这个链接***.com/questions/5978667/… 【参考方案1】:

检查Forms Authentication web.config 元素是否也将requireSSL 设置为true,因为该设置会覆盖System.Web httpCookies 元素设置并默认为false

【讨论】:

不在解决方案中的任何地方使用表单身份验证。谢谢。 这主要是答案。 requireSSL 确实是造成这种情况的原因,但该设置已移至 sso.config 文件中 - 所以当我将其放入 web.config 时,sso.config 将其覆盖。【参考方案2】:

设置此属性会从服务器客户端发送“安全”属性,表明客户端只有在使用 SSL 连接时才能将其发回。

简而言之,您可以通过在 SSL 上运行 ASP.NET 应用程序来测试这一点。一种简单的方法是在 Visual Studio > 属性中选择您的 Web 项目 > 将 SSL 启用 设置为 true。

此外,OWASP 有一个不错的article about testing for cookies attributes。在文章中,前面提到的安全属性是可以理解的:

Secure - 此属性告诉浏览器仅在请求通过 HTTPS 等安全通道发送时才发送 cookie。这将有助于保护 cookie 不被未加密的请求传递。如果应用程序可以通过 HTTP 和 HTTPS 访问,那么 cookie 就有可能以明文形式发送。

【讨论】:

感谢您提供有关测试的链接!很好地概述了设置“安全”标志所需的设置。【参考方案3】:

找到了——确实是导致这种情况的 requireSSL 属性。然而,它是在应用程序的其他地方设置的(在一个 sso.config 文件中 - 它被设置为 false 并覆盖了我在 web.config 中放置的任何内容)。

【讨论】:

以上是关于.NET 使用身份验证模式的“安全”cookie = 无的主要内容,如果未能解决你的问题,请参考以下文章

.Net SignalR 在还配置了 Cookie 身份验证时使用 JWT 承载身份验证

通过 cookie 标头发送令牌身份验证信息是不是安全?

Cookie 身份验证 ASP.NET Core

如何在 ASP.Net MVC 应用程序中使用来自 WCF 身份验证服务的身份验证 cookie

Asp.net 形成身份验证 cookie 不遵守 IIS7 的超时

ASP.NET Core 使用Cookie验证身份