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

时间:2013-11-13 09:26:34

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

我正在尝试配置我的环境,以便只能通过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);

例外:

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

堆栈跟踪:

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

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

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

任何人都可以帮我解决这个问题吗?感谢。

2 个答案:

答案 0 :(得分:3)

这有点不合适,但仍与你想要完成的事情相关。您假设在cookie上使用Secure标志将保护它免受XSS的影响是不正确的。安全标志仅表示cookie将仅通过HTTPS发送。

您实际需要的标志是HttpOnly标志。 HttpOnly标志将使浏览器仅将cookie作为HTTP / S请求的一部分提供。然后,浏览器将拒绝客户端代码(JavaScript,Flash等)访问cookie,从而保护它免受XSS攻击。

所有这一切,你应该使用两个标志来保护敏感的cookie(如会话cookie)。

答案 1 :(得分:0)

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

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

选择项目-> F4

enter image description here

选择项目Alt + Enter

enter image description here