Safari 12 で発生する「Content Security Policy」バグのメモ


はじめに

Qiitaに初めて投稿します「Saguzi」と申します。
普段はHTML/CSSをベタ打ちで趣味程度にWebデザインを嗜んでいます。
初回は遭遇したバグの記録とか。

遭遇したエラー

私はMacでPHPの開発を行っていたのですが、
GoogleのreCAPTCHA v3を導入している際にSafariで下記のようなエラー文に遭遇しました。
The source list for Content Security Policy directive 'script-src' contains an invalid source: ''strict-dynamic''. It will be ignored.
私の環境では3つ、エラーとして出力されていました。
これは一体何なんでしょうか。

コンテンツセキュリティポリシー

以下はMozillaが提供するMDN Web Docsからの引用です。

コンテンツセキュリティポリシー (CSP) は、クロスサイトスクリプティング (XSS) やデータインジェクション攻撃などのような、特定の種類の攻撃を検知し、影響を軽減するために追加できるセキュリティレイヤーです。これらの攻撃はデータの窃取からサイトの改ざん、マルウェアの拡散に至るまで、様々な目的に用いられます。
MDN Web Docs - https://developer.mozilla.org/ja/docs/Web/HTTP/CSP

要するに勝手にHTMLやJavaSciptを書き換えてサーバにダメージを与えるような攻撃から守ってくれるものです。
しかし当該ソースには'script-src'の記述はありません。何故エラーが出るんでしょうか…?

Safari 12から発生しているバグ

こちらはGitHubのIssueです。

Safari bug, The source list for Content Security Policy directive 'script-src' contains an invalid source: ''strict-dynamic''. It will be ignored.
https://github.com/szchenghuang/react-google-invisible-recaptcha/issues/23
https://github.com/google/google-api-javascript-client/issues/397

これによると、12.0 (13606.2.11)でバグの再現を確認していると言う事でした。
私の環境(現時点での最新版)は12.1.2 (14607.3.9)です。

つまり、Version 12.0から発生したバグは現在も残っています。
詳しく掘り下げていませんが、どうやらGoogleのreCAPTCHA絡みのバグのようです。
上掲のIssueにも書かれていますが、(CSPを使用していなければ)無視しても構いません

最後に、Issueのコメントを引用して締めくくりたいと思います。

This is extremely painful for users using Safari.
(これは、Safariを使用しているユーザーにとって非常に苦痛です。)
https://github.com/google/google-api-javascript-client/issues/397#issuecomment-471679235