【问题标题】:Antiforgery Token Cookie Not Appearing in Request Headers Only in when Embeded in IframeAnti Forgery Token Cookie 仅在嵌入 iframe 时才出现在请求标头中
【发布时间】:2019-03-11 04:04:07
【问题描述】:

我正在尝试嵌入一个简单的网络应用程序,该应用程序会将运行 asp.net Core 2.0 的用户输入发布到 iframe 中。我遇到的问题是,在嵌入时,正在生成的请求标头缺少包含 .AspNetCore.Antiforgery.[token] 的 cookie 标头。它正在 iframe 之外按预期生成。

这会导致 400 错误,因为帖子无法验证令牌。

在 iframe 之外生成的请求标头: Request Headers: NO IFRAME

在 iframe 内部生成的请求标头: Request Headers: INSIDE IFRAME

有人对防伪令牌库有过这个问题吗?

谢谢!!

【问题讨论】:

    标签: cookies iframe asp.net-core antiforgerytoken


    【解决方案1】:

    事实证明,防伪选项的 cookie 类上的 SameSite 属性需要设置为 None 才能起作用:

    services.AddAntiforgery(options => { options.Cookie.SameSite = SameSiteMode.None; });

    【讨论】:

    • 这对我帮助很大。您是否预见到将其设置为无任何安全问题。
    • 安全风险是其他网站可能会通过劫持客户端已有的 cookie 发布到您的页面。
    【解决方案2】:

    Flyingmartini 的回答对我不起作用,我还需要设置这些属性:

                services.AddAntiforgery(options =>
                {
                    options.SuppressXFrameOptionsHeader = true;
                    options.Cookie.SameSite = SameSiteMode.None;
                    options.Cookie.SecurePolicy = CookieSecurePolicy.SameAsRequest;
                });
    

    【讨论】:

      猜你喜欢
      • 2017-12-02
      • 1970-01-01
      • 1970-01-01
      • 2013-12-24
      • 1970-01-01
      • 1970-01-01
      • 2014-08-27
      • 2016-09-09
      • 2017-11-27
      相关资源
      最近更新 更多