我在UAT - requireSSL="true"中的web.config代码行中发现了不安全服务器(没有SSL)中的web.config属性的问题。
对于CSRF (跨站点请求伪造)修复,我们使用:
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]问题的修正是相互依赖的。
有两个问题-
Request.Cookies[AntiXsrfTokenKey]读取安全曲奇吗?requireSSL="false",那么CSRF修复可以正常工作,但是所有cookie都会变得不安全,这意味着[Missing Secure Attribute in Encrypted Session (SSL) Cookie]问题对所有cookie都会持续存在。发布于 2015-12-04 09:20:26
这可能不是你问题的答案,但我们可以尝试一下,
要从CSRF令牌中获得最大利益,可以使用Request.Headers传递它。使用报头传输令牌是我认为安全的方法。
虽然default.aspx的HttpContext.Current.Request.Headers"CSRFToken“很好,但是如果您在其中有任何httpmodule,可以尝试AcquireRequestState()方法并获取AcquireRequestState(),并在会话中保留该令牌的一个副本以进行验证(可能还有其他一些逻辑要验证)
https://stackoverflow.com/questions/26227793
复制相似问题