Rob*_*ray 2 asp.net-mvc csrf antiforgerytoken missing-cookies
我的ASP.NET MVC应用程序通过使用ValidateAntiForgeryToken属性并调用Html.AntiForgeryToken来写入带有标记值的隐藏输入元素来阻止CSRF攻击,并将标记放在cookie中.
我的异常日志是报告HttpAntiForgeryException的出现,看起来它们是从有效请求触发的(推荐者看起来正确).导致异常的响应还在表单字段中包含带有标记值的__RequestValidationToken.但是,请求中缺少必要的cookie,导致验证失败并抛出异常.
我想到为什么这个cookie丢失了,并提出了以下可能的原因:
在解散中,我转向SO的人,并询问我可以调查的这个丢失的cookie的任何其他可能原因.
我遇到了完全相同的问题.我的内容是通过跨域iframe呈现的.根据Adam Young的说法,IE将自动阻止第三方cookie,除非您在标题中定义了P3P策略.
我添加了代码以将p3p策略注入标头,并从我在iframe中使用的每个操作中调用它.到目前为止,我们还没有看到这个错误出现.我希望这个解决方案可以帮助别人.
public static void SetP3PCompactPolicy()
{
HttpContext.Current.Response.AddHeader("p3p",
"CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\"");
}
Run Code Online (Sandbox Code Playgroud)
我还定义了一个机器密钥,虽然我不确定是否有必要.
| 归档时间: |
|
| 查看次数: |
4181 次 |
| 最近记录: |