ASPNET MVC 5:不存在防伪cookie

时间:2017-04-11 17:55:45

标签: asp.net-mvc http https antiforgerytoken

我有一个使用antiforgerytoken保护所有表单的应用程序。该应用程序托管在一个网站上,该网站的http绑定设置为8080,而https设置为443(默认的https端口)。到目前为止,我确保所有请求都是通过https进行的(MVC应用程序使用了必需的https过滤器,web配置将cookies条目requiressl设置为true,并且owin的auth cookie也设置为https)。

最近,我们不得不改变一些事情,因为现在我们有了一个防火墙来处理我们的https请求。它将始终通过https向最终客户端提供响应,但我已经更改了我的应用程序,以便可以通过http调用它。

我已从配置中删除了所需的https过滤器,cookie所需的ssl,并更改了owin auth cookies设置,并认为一切都会好的。不幸的是,这没有发生,我已经开始在验证期间获得防伪标记cookie丢失异常。现在,问题是如果我使用https,一切都会成功,但如果我改为http(在端口8080中),它将会中断。

我最终在全局asax中更改了防伪配置设置,但我无法找到前一个问题的良好解释。换句话说,为什么https访问没有任何问题,但http访问最终抛出异常,说它无法找到防伪cookie ...

任何想法?

谢谢, 路易斯

1 个答案:

答案 0 :(得分:3)

更有可能的是,您使用安全Cookie(使用Secure标记发送的Cookie)。这些只能在HTTPS连接上存在。一旦SSL被删除,任何安全cookie也会被删除。您可以将其关闭,但这实际上会为您的用户打开一个攻击媒介,允许他们的Cookie通过协议切换以纯文本形式公开。

你能做的最好的事情就是让它一直保持安全。仅仅因为防火墙提供SSL,并不意味着您也无法在您的网站上实施SSL。唯一的区别是您需要一个自签名证书,因为很明显外部域不适用。除此之外,在内部代理安全站点应该没有问题,而不是不安全的站点。