ウェブサイトで Google タグ マネージャーを使用することを検討していましたが、サーバーの mod-security インストールによってブロックされているデフォルトの Google インクルード コードが原因で、最初のハードルで失敗しました。
標準 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 をフォーマットする方法を知っている人はいますか? または、iframe が含まれないように GTM インクルード コードを変更する方法を教えてください。
ありがとう
PS: noscript領域全体を削除することでこの問題を解決できることはわかっていますが、インクルード コードの機能を変更しない解決策を探しています。
PPS: これはルール 981000 が一致するパターンです。ネストされたキャプチャ グループのクラウドで脳が爆発する前に、その約半分を理解できます ;-)
Pattern match "<\W*iframe[^>]+?\b(?:width|height)\b\W*?=\W*?["']?[^"'1-9]*?(?:(?:20|1?\d(?:\.\d*)?)(?![\d%.])|[0-3](?:\.\d*)?%)"