gpt4 book ai didi

apache - 谷歌标签管理器包含在 Apache 中传递 mod-security 规则

转载 作者:行者123 更新时间:2023-12-04 22:20:48 26 4
gpt4 key购买 nike

我一直在考虑在我的网站上使用 Google 标签管理器,但由于默认的 Google 包含代码被我服务器上的 mod-security 安装阻止,我在第一个障碍中失败了:

标准 GTM 包括代码:

<!-- Google Tag Manager -->
<noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-XXXXXX"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-XXXXXX');</script>
<!-- End Google Tag Manager -->

来自 mod-security 的回应:
WARNING:    Possibly malicious iframe tag in output
Message: Outbound Anomaly Score Exceeded (score 15): Possibly malicious iframe tag in output

触发的规则是 ID 981000 和 981001。

我可以理解为什么 mod-security 可能认为带有“display:none;visibility:hidden”的 iframe 可能是恶意的,并且删除样式属性会阻止触发规则 981001,但由于规则 981000,请求仍然失败。

981000 似乎对宽度和高度属性应该是什么有强烈的看法,但我已经尝试将它们设置为 '1' 和 '10' 无济于事:-(

有谁知道如何格式化 iframe 以符合此规则?或者如何更改 GTM 包含代码以使其不包含 iframe?

谢谢

PS:我知道您可以通过删除整个 noscript 区域来解决这个问题,但我正在寻找一种不会改变包含代码功能的解决方案。

PPS:这是规则 981000 匹配的模式,在我的大脑在一堆嵌套的捕获组中爆炸之前,我可以理解其中的一半;-)
Pattern match "<\W*iframe[^>]+?\b(?:width|height)\b\W*?=\W*?["']?[^"'1-9]*?(?:(?:20|1?\d(?:\.\d*)?)(?![\d%.])|[0-3](?:\.\d*)?%)"

最佳答案

经过大量实验 - 我发现以下代码有效:

<!-- Google Tag Manager -->
<noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-XXXXXX"
height="21" width="21" class ="noDisplay"></iframe></noscript>
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-XXXXXX');</script>
<!-- End Google Tag Manager -->

似乎规则 981000 将针对任何小于 21 像素或宽度或高度的 3% 的 iframe 触发。将可见性和显示样式信息移至外部样式表可防止触发规则 981001。
.noDisplay {
display:none;
visibility:hidden;
}

该代码现在通过了 mod 安全性,并以(几乎)Google 预期的方式在页面中包含了 GTM。

我希望能帮助其他人遇到同样的问题:-)

关于apache - 谷歌标签管理器包含在 Apache 中传递 mod-security 规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22964411/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com