表单身份验证-需要SSL-设置身份验证Cookie失败

问题描述 投票:2回答:2

我正在尝试配置我的环境,以便只能通过HTTP访问身份验证cookie(以保护它免受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);

Exception:

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

堆栈跟踪:

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

在System.Web.Security.FormsAuthentication.SetAuthCookie(String userName,布尔值createPersistentCookie,字符串strCookiePath)

问题在我的本地计算机上发生(即使它已配置为用于HTTPs访问),也在实时服务器上(同样也在HTTPs上)

有人可以帮我解决这个问题吗?谢谢。

c# .net security https forms-authentication
2个回答
4
投票

这有点不重要,但仍然与您要实现的目标有关。您认为在Cookie上使用Secure标志可以保护它免受XSS的影响是不正确的。该安全标志仅表示该cookie仅通过HTTPS发送。

您实际上正在寻找的标志是HttpOnly标志。 HttpOnly标志将使浏览器仅将cookie用作HTTP / S请求的一部分。然后,浏览器将拒绝客户端代码(JavaScript,Flash等)对cookie的访问,从而保护它免受XSS的侵害。

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


0
投票

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

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

Select the Project -> F4enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.