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

标签 c# .net security https forms-authentication

我正在尝试配置我的环境,以便身份验证 cookie 只能通过 HTTP 访问(保护它免受 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 协议(protocol))发出请求。但是,当前请求未通过 SSL。

堆栈跟踪:

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

在 System.Web.Security.FormsAuthentication.SetAuthCookie(字符串用户名, bool createPersistentCookie,字符串 strCookiePath)

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

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

最佳答案

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

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

综上所述,您应该使用这两个标志来保护敏感 cookie(如 session cookie)。

关于c# - 表单例份验证 - 需要 SSL - 设置身份验证 Cookie 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19949988/

相关文章:

c# - 如何从 C# 中删除 robo-comments 和#region?

c# - 检查文本框是否有值,使另一个文本框成为必需的

security - SSH 能否用于加密 SSL/TLS 等应用程序之间的通信?

c# - Jasny Bootstrap 文件上传控件

c# - 两个已知标签之间可能出现不止一次的子字符串的正则表达式

.net - 为什么在同一个数据库中保存散列密码的盐是安全的?

c# - 在 SSL 下显示来自同一域的 IFrame

.net - 将 C 数据结构和 typedef 映射到 .Net

java - Spring Security - 多种配置 - 添加 LogoutHandler

ios - APNS token 应该加密吗?