SECURITY / CSP

ページから利用できる外部 CDN・Google Fonts

Dropli で公開したページには、閲覧者を守るためのセキュリティポリシー (Content Security Policy)が自動で付与されます。外部リソースは 信頼できる主要 CDN と Google Fonts に限って利用できます。 一覧にないホストのスクリプト・CSS は読み込めません。

許可している外部ホスト一覧

以下のホストは、スクリプト(<script>)・スタイルシート (<link rel="stylesheet">)・フォント・ fetch() による取得のすべてで利用できます。

ホスト内容代表的な用途
cdn.jsdelivr.netjsDelivr(npm / GitHub 配信)Chart.js、Bootstrap、各種 npm パッケージ
unpkg.comUNPKG(npm 配信)React、Vue などの npm パッケージ
cdnjs.cloudflare.comcdnjs(Cloudflare)Font Awesome、Lodash などの OSS ライブラリ
esm.shesm.sh(ES Modules 配信)import でのモジュール読み込み
code.jquery.comjQuery 公式 CDNjQuery 本体・プラグイン
cdn.tailwindcss.comTailwind CSS(Play CDN)ビルドなしで Tailwind を使う

Google Fonts

Google Fonts はホストが 2 つに分かれており、どちらも許可しています。

ホスト内容
fonts.googleapis.comフォント定義の CSS(<link rel="stylesheet"> で読み込む側)
fonts.gstatic.comフォントファイル本体(CSS から自動的に参照される側)

使用例

アップロードする HTML にそのまま書くだけで動きます。

<!-- Google Fonts -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+JP&display=swap" rel="stylesheet">

<!-- ライブラリを CDN から読み込む -->
<script src="https://cdn.jsdelivr.net/npm/chart.js@4"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/all.min.css">

<!-- ES Modules として import する -->
<script type="module">
  import confetti from "https://esm.sh/canvas-confetti@1";
</script>

できること・できないこと

内容
できる上記の信頼 CDN・Google Fonts からのスクリプト / CSS / フォント読み込み
できる画像の読み込み(任意の https: ホストと data: URI からの参照
できるページ内のインラインの <script> / <style>
できる同一ページ内(__data/… を含む)と信頼 CDN への fetch()
できない一覧にないホストからのスクリプト / CSS / フォントの読み込み
できない外部ホストへのフォーム送信(form-action は自ページのみ)
できない一覧にない外部 API への fetch() / XHR、他サイトからの iframe 埋め込み
できない画像やその他バイナリファイルを Dropli 上に保存するアップロード(アップロードできるのは HTML / CSS / JS などのテキスト系ファイルのみ。外部ホストからの参照は上記のとおり可)
なぜ制限しているの?
共有リンクで開いたページが、閲覧者の入力を外部に送信したり、出所不明のスクリプトを 実行したりできないようにするためです。フォーム送信先と通信先を絞ることで、 フィッシングやデータ持ち出しのリスクを下げています。
画像はアップロードできないの?
Dropli 上に保存する形でアップロードできるのは HTML / CSS / JS などのテキスト系ファイルだけで、 画像やその他バイナリファイルの保存には対応していません。これは「画像が危険だから」ではなく、 Dropli 自身が保存・配信するファイルの範囲を安全のため限定しているためです(画像は上記のとおり、 外部ホストや data: URI から参照すればページ内にそのまま表示できます)。
使いたい CDN が一覧にない場合
可能であれば jsDelivr(npm / GitHub のファイルをそのまま配信できます)経由での 読み込みに書き換えるのが確実です。それでも必要なホストがあれば、 フィードバックからリクエストしてください。