我正在尝试配置我的环境,以便只能通过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上)
任何人都可以帮我解决这个问题吗?感谢。
答案 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
选择项目Alt + Enter