【问题标题】:Forms Authentication - Require SSL - Setting Authentication Cookie Fails表单身份验证 - 需要 SSL - 设置身份验证 Cookie 失败
【发布时间】:2013-11-13 09:26:34
【问题描述】:

我正在尝试配置我的环境,使身份验证 cookie 只能通过 HTTPs 访问(保护它免受 XSS 攻击)。我阅读了几篇文章并得出结论,我应该将 requireSSL 属性设置为“true”

<authentication mode="Forms">
  <forms name="someName" loginUrl="~/login" timeout="40" protection="All" slidingExpiration="true" defaultUrl="~/index" requireSSL="true" />
</authentication>

问题是,当我尝试设置身份验证 cookie 时,它​​会引发异常。

FormsAuthentication.SetAuthCookie(username, false);

例外:

应用程序配置为发出安全 cookie。这些 cookie 要求浏览器通过 SSL(https 协议)发出请求。但是,当前请求不是通过 SSL。

堆栈跟踪:

System.Web.HttpException:应用程序配置为发出安全 cookie。这些 cookie 要求浏览器通过 SSL(https 协议)发出请求。但是,当前请求不是通过 SSL。

在 System.Web.Security.FormsAuthentication.SetAuthCookie(String userName, Boolean createPersistentCookie, String strCookiePath)

问题出现在我的本地机器上(即使它已配置为使用 HTTPs 访问)和实时服务器(也在 HTTPs 上)

谁能帮我解决这个问题?谢谢。

【问题讨论】:

  • 您是否使用 https 访问该页面?如果您使用的是 MVC,您可以在调用的操作(获取和发布)上使用 [RequireHttps] 属性来强制执行此操作
  • 是的,整个应用程序都在 HTTPs 上,所以请求是通过 HTTPs 完成的。我正在使用 .NET Webforms,Framework 3.5
  • 嗯,应该够好了。我能想到的最好的事情可能是您正在使用代理(例如:提琴手)。如果不是我是空白的:|
  • 是的,刚刚配置了我的本地环境,好像配置文件有问题。我还必须检查实时服务器。谢谢。

标签: c# .net security https forms-authentication


【解决方案1】:

这有点离题,但仍然与您要完成的工作相关。您认为在 cookie 上使用 Secure 标志可以保护其免受 XSS 攻击的假设是不正确的。安全标志只是意味着 cookie 将仅通过 HTTPS 发送。

您真正要查找的标志是HttpOnly 标志。 HttpOnly 标志将导致浏览器仅将 cookie 作为 HTTP/S 请求的一部分提供。然后,浏览器将拒绝客户端代码(JavaScript、Flash 等)对 cookie 的访问,从而保护其免受 XSS 攻击。

话虽如此,您应该使用这两个标志来保护敏感 cookie(如会话 cookie)。

【讨论】:

    【解决方案2】:

    删除本地主机证书并通过修复 IIS Express 重新创建它们在我的情况下修复了此错误。我关注了the steps mentioned in this guide,这解决了 Visual Studio 2019 上的问题。

    Visual Studio 2017 - Resolving SSL/TLS Connections Problems with IIS Express

    选择项目 -> F4

    选择项目 Alt + Enter

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-28
      • 2011-10-24
      • 1970-01-01
      • 2013-09-16
      • 1970-01-01
      • 1970-01-01
      • 2022-10-16
      • 2011-06-11
      相关资源
      最近更新 更多