首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解决requireSSL=“真”的CSRF和[加密会话中丢失的安全属性(SSL) Cookie]问题?

如何解决requireSSL=“真”的CSRF和[加密会话中丢失的安全属性(SSL) Cookie]问题?
EN

Stack Overflow用户
提问于 2014-10-07 02:41:58
回答 1查看 4.3K关注 0票数 2

我在UAT - requireSSL="true"中的web.config代码行中发现了不安全服务器(没有SSL)中的web.config属性的问题。

对于CSRF (跨站点请求伪造)修复,我们使用:

代码语言:javascript
复制
var requestCookie = Request.Cookies[AntiXsrfTokenKey];

我们不能从不安全的服务器上读取安全cookie。因此,对于不安全的服务器,requireSSL属性在web.config中应该是false。

如果我们使requireSSL="false"的CSRF修复工作良好,但所有cookie都会变得不安全,这会产生其他问题[Missing Secure Attribute in Encrypted Session (SSL) Cookie]

我们还附加了CSRF修复代码,其中函数PreventCSRF()OnInit(EventArgs e)事件在Default.aspx.cs页面中调用。

在本地,我们没有SSL,requireSSL="false"对CSRF修复很好,但对于[Missing Secure Attribute in Encrypted Session (SSL) Cookie]则不行。因此,对CSRF和[Missing Secure Attribute in Encrypted Session (SSL) Cookie]问题的修正是相互依赖的。

有两个问题-

  1. 与UAT一样,SSL是在负载均衡器级别管理的,IIS框中没有安装SSL证书。我们能用Request.Cookies[AntiXsrfTokenKey]读取安全曲奇吗?
  2. 如果我们执行requireSSL="false",那么CSRF修复可以正常工作,但是所有cookie都会变得不安全,这意味着[Missing Secure Attribute in Encrypted Session (SSL) Cookie]问题对所有cookie都会持续存在。
EN

回答 1

Stack Overflow用户

发布于 2015-12-04 09:20:26

这可能不是你问题的答案,但我们可以尝试一下,

要从CSRF令牌中获得最大利益,可以使用Request.Headers传递它。使用报头传输令牌是我认为安全的方法。

虽然default.aspx的HttpContext.Current.Request.Headers"CSRFToken“很好,但是如果您在其中有任何httpmodule,可以尝试AcquireRequestState()方法并获取AcquireRequestState(),并在会话中保留该令牌的一个副本以进行验证(可能还有其他一些逻辑要验证)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26227793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档