【问题标题】:.NET 'secure' cookies using authentication mode = none.NET 使用身份验证模式的“安全”cookie = 无
【发布时间】: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 实现?

谢谢。

【问题讨论】:

标签: c# .net


【解决方案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 中放置的任何内容)。

【讨论】:

    猜你喜欢
    • 2011-10-06
    • 2023-03-31
    • 2020-06-16
    • 1970-01-01
    • 1970-01-01
    • 2012-08-01
    • 2010-09-27
    • 1970-01-01
    • 2020-03-09
    相关资源
    最近更新 更多