HTML スクリプトのインストール時に問題が発生しますか?

Discourseのセキュリティ保護のためにホワイトリストフィルタが有効になっているため、Pure Chatスクリプトのインストールに問題が発生しています。Pure Chatのリンクをいくつかホワイトリストに追加しましたが、それでもPure Chatの会話タブが表示されません。ご支援をお願いします。エラーメッセージは以下の通りです:

legacy.111147.js:1 Uncaught EvalError: Refused to evaluate a string as JavaScript because ‘unsafe-eval’ is not an allowed source of script in the following Content Security Policy directive:

at new Function (<anonymous>)
at Function.b.template (legacy.111147.js:1)
at Module.<anonymous> (legacy.111147.js:32)
at n (legacy.111147.js:1)
at Object.<anonymous> (legacy.111147.js:32)
at n (legacy.111147.js:1)
at legacy.111147.js:1
at legacy.111147.js:1

この問題を解決する方法をご存知の方はいらっしゃいますか?CSPを無効にすればスクリプトは正常に動作します。しかし、CSPを有効にしたままスクリプトを動作させる方法はどうすればよいでしょうか?

スクリプトソースをコンテンツセキュリティポリシーの script-src に追加してください。

コンソールタブでエラーリンクを確認したので追加しました :slight_smile:

しかし、まだ正常に動作しません。

この機能の使い方が間違っています。個別の URL すべてを許可するのではなく、ドメインをホワイトリストに登録するだけで十分です。

もしかしたら、ここにあるコピーを改善する必要があるかもしれませんね @tshenry

ご支援ありがとうございます。再度修正してみます。

しかし、依然として問題があります。CSP を有効にすると、PureChat スクリプトが表示されません。2 つの新しいリンクを追加したにもかかわらずです。

正直に言いますが、私は CSP の専門家ではありません!

とはいえ、ドメインをホワイトリストに追加することが理想的な場合もあれば、個々のスクリプトを対象とする方が適切な場合もあると思います。どのくらい多くのスクリプトをホワイトリストに追加する必要があるか、ソースを信頼できるかなどによって異なるはずです。必要に応じてドメインを包括的な対策として使えることをガイドに追記しておきます。

提供されたスクリーンショットの設定は確かに少し過剰でしたが、何も機能しなかったため、すべてをカバーしようとした試みだったのだと思います。

試しに Pure Chat をテストサイトに追加してみました。Chrome ではハッシュを使って動作させることができましたが、Safari や Firefox では不十分でした。Penar に確認したところ、これは unfortunate な状況の一例であり、以下で言及されているように 'unsafe-inline' が必要になるようです:


@BishopV Pure Chat を使い続けることを選ぶ場合、その設定にあるすべてのエントリを削除し、セキュリティを犠牲にして 'unsafe-inline' を追加するしか選択肢はないと思います。

代わりに Setup HubSpot chat Integration の使用を検討しましたか?これは当社の CSP ポリシーと非常に相性が良いようです。

いずれにせよ、最悪のケースは、同じドメインから 20 個の一意な URL をハードコーディングしてしまうことです。

お手伝いいただきありがとうございます。今では HubSpot が私の解決策だと思います。Discourse をバックエンドに選んでよかったです。ここには多くの助けとサポートがあります。