【问题标题】:Sitefinity 11 adding sandbox attributes to iframe dynamically.Sitefinity 11 将沙盒属性动态添加到 iframe。
【发布时间】:2019-02-18 08:31:41
【问题描述】:

我们有一个 Sitefinity 11.0.6701.0 站点,其中我有一个页面,其中包含一个带有 iframe 的内容块。我们在 iframe 中显示的页面是动态的,并且其中包含一个表单 - 我们不关心点击劫持或类似的事情,因为我们也托管 src 页面。

我们最近从版本 8 升级了我们的网站,现在 iframe 的内容(我们也在一个单独的网站上托管)不允许动态内容工作。

我注意到 Sitefinity 似乎在运行时向 iframe 添加了一个 sandbox="allow-scripts allow-same-origin" 属性。我试图将其更改为 sandbox="allow-forms" 以及完全删除沙盒属性,但 Sitefinity 会在运行时动态添加第一个属性。它将“allow-forms”替换为“allow-scripts allow-same-origin”属性。

有谁知道这在 Sitefinity 中的控制位置以及我们如何解决这个问题?我们需要这个页面是动态的。出于合同原因,我无法更改 Sitefinity 环境中的实际代码,只能在 CMS 中工作。

提前致谢, 杰米

【问题讨论】:

    标签: iframe sitefinity


    【解决方案1】:

    这是由 Html Sanitizer 引起的。

    一个选项是在下面禁用它 管理 > 设置 > 高级 > 安全 > 禁用 HTML 清理 并重新启动网站。

    另一种选择是尝试修改 sanitizer 配置,如下所示: https://docs.sitefinity.com/html-sanitization#modify-the-html-sanitizer-configuration

    但是查看 v.11 的反编译代码可能不是那么容易:

        private class GanssHtmlSanitizer : HtmlSanitizer
        {
            private const string IframeNodeName = "iframe";
    
            public GanssHtmlSanitizer() : base(null, null, null, null, null)
            {
                base.AllowedTags.Add("iframe");
                base.PostProcessNode += new EventHandler<PostProcessNodeEventArgs>(this.GanssHtmlSanitizer_PostProcessNode);
            }
    
            private void GanssHtmlSanitizer_PostProcessNode(object sender, PostProcessNodeEventArgs e)
            {
                if (string.Compare(e.Node.NodeName, "iframe", true) == 0)
                {
                    (e.Node as IElement).SetAttribute("sandbox", "allow-scripts allow-same-origin");
                    string attribute = (e.Node as IElement).GetAttribute("src");
                    (e.Node as IElement).SetAttribute("src", this.SanitizeUrl(attribute));
                }
            }
    
            /// <inheritdoc />
            public string SanitizeUrl(string url)
            {
                return base.SanitizeUrl(url, null);
            }
        }
    

    【讨论】:

    • 这就是答案!关闭 HTML 清理让我可以在 iFrame 上保留我想要的设置。谢谢@VeselinVasilev!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-04
    • 2013-01-07
    • 2022-12-18
    • 2019-04-28
    相关资源
    最近更新 更多