4

我正在尝试配置我的环境,使身份验证 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(字符串用户名,布尔 createPersistentCookie,字符串 strCookiePath)

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

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

4

2 回答 2

4

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

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

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

于 2013-11-13T14:48:21.913 回答
1

删除本地主机证书并通过修复 IIS Express 重新创建它们在我的情况下修复了此错误。我已按照本指南中提到的步骤解决了 Visual Studio 2019 上的问题。

Visual Studio 2017 - 使用 IIS Express 解决 SSL/TLS 连接问题

选择项目-> F4

在此处输入图像描述

选择项目 Alt + Enter

在此处输入图像描述

于 2020-01-13T04:25:10.417 回答