【发布时间】: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