概要

Content Security Policy(CSP)は、ウェブサイトの管理者がページで許可するリソースの読み込みを制御し、主に予防的なレベルでのセキュリティ向上を図るためのセキュリティレイヤーです。

CSPの設定は各リソースタイプ毎に許可を追加する形になっており、具体的な設定値に関してはポリシーや設計、サイトの対象ブラウザのバージョンなどによって調整いただく必要があります。

このドキュメントでは、KARTEを正常に動作させるために許可が必要なCSPソース値を記載します。自サイトのポリシーに合わせた形で設定を追加してください。

CSPについて詳しくは、コンテンツセキュリティポリシー (CSP) - MDNなどの技術資料を参照してください。

許可すべきCSPソース値

*.karte.io

  • script-src

  • style-src

  • img-src

  • font-src

  • connect-src

のソースとして許可してください。

wss://*.karte.io

  • connect-src

のソースとして許可してください。

'unsafe-inline'

  • script-src

  • style-src

のソースとして許可してください。

<script>...</script>や<style>...</style>、<div style="...">などを動作させるために必要です。

https://blitz-production-action.s3.ap-northeast-1.amazonaws.com

  • script-src

のソースとして許可してください。

マルチドメインモードをご利用の場合

https://ktid.karte-edge.io

  • frame-src

のソースとして許可してください。
マルチドメインモードを利用しない場合は追加不要です。

従来の形式の接客アクション(Widget)を利用する場合

施策アクションは内部形式によって「従来からの接客アクション(Widget)」と「フレックスエディタで作った接客アクション」の二種類に分かれます。従来からの接客アクション(Widget)を利用する場合は下記の許可が必要になります。

'unsafe-eval'

  • script-src

のソースとして許可してください。
また、 style-src のソースとして許可が必要になるケースがあります。

https://img-karte-io.s3.amazonaws.com

  • img-src

のソースとして許可してください。

従来からの接客アクションの確認方法

接客一覧や詳細画面で確認ができます。従来からの接客アクションにはアイコンがついていません。

ポリシーを厳しくしたい場合の対応方法

ここではscript-src において 'unsafe-inline' および 'unsafe-eval' を許可せずに KARTE を利用する方法をまとめます。*.karte.io など本ドキュメント前半で記載の許可は、引き続き必要です。style-src の 'unsafe-inline' など、他ディレクティブの要件は変わりません。

また既存のポリシーを変更する場合は、現状の施策運用に影響が出ないことを検証環境等で十分に検証してから実施してください。

前提となる整理

次の条件を満たす場合、基本的なイベント計測および接客サービスの配信が可能であることを確認しています。

回避したい許可対応方法
script-src の 'unsafe-inline'CSP を 'nonce-<値>' と 'strict-dynamic' で運用し、計測タグの各 <script> に同一の nonce を付与する
script-src の 'unsafe-eval'対象ページではフレックスエディタで作成した接客アクションのみを配信する(従来形式の Widget は利用しない)

script-src で 'unsafe-inline' を付けない場合(nonce + strict-dynamic)

リクエストごとにサーバー側でランダムな nonce を生成し、CSP ヘッダーと KARTE 計測タグのすべての <script> で同じ値を使います。'strict-dynamic' により、nonce 付きスクリプトから信頼された経路で読み込まれる後続スクリプトの実行が許可されます。

CSP ヘッダー例(script-src のみ抜粋)

script-src 'nonce-RANDOM_VALUE' 'strict-dynamic' https://*.karte.io https://blitz-production-action.s3.ap-northeast-1.amazonaws.com;

KARTE計測タグ実装例


<script nonce="RANDOM_VALUE">
  !function(n){if(!window[n]){var o=window[n]=function(){var n=[].slice.call(arguments);return o.x?o.x.apply(0,n):o.q.push(n)};o.q=[],o.i=Date.now(),o.allow=function(){o.o="allow"},o.deny=function(){o.o="deny"}}}("krt")
</script>
<script nonce="RANDOM_VALUE" async src="https://cdn-edge.karte.io/API_KEY/edge.js"></script>
  • RANDOM_VALUE は推測困難な値を使用し、リクエストごとに変更してください

script-src で 'unsafe-eval' を付けない場合

従来の形式の接客アクション(Widget)を利用する場合で必要となる 'unsafe-eval' は、フレックスエディタ製の接客のみを配信するページでは一般的に不要です。対象ページでフレックスエディタ製の接客のみを配信するようにすることで、 'unsafe-eval'を許可せずに基本的なKARTEの接客サービス機能を利用することができます。

注意点

  • すべての機能が上記のポリシー設定下で動作することを保証するものではありません。実際に利用する機能の挙動に問題がないかを事前に検証し、問題がないことを確認したうえで本番適用してください

  • 接客に埋め込んだ JavaScript がインライン <script> を動的に挿入するような記述を含む場合、'unsafe-inline' を許可していないと動作しないことがあります

  • ウェブチャットを配信するテンプレートについては従来の形式の接客アクションと同様の仕組みを使っており、2026年10月現在、'unsafe-eval' なしでは動作しません