Referrer-Policy_for_kintoneというプラグインを作成しました

Referrer-Policy for kintoneというプラグインを作成しました

こんにちは、エミックの松尾です。Referrer-PolicyというHTTPヘッダーについて教えてもらったことがきっかけで、試しにkintone用のプラグインを作成してみました。今回の記事では、Referrer-Policyヘッダーやkintone用プラグインである「Referrer-Policy for kintone」の概要について記しています。

Referrer-Policyヘッダーについて

HTTPのReferrer-Policyヘッダーは、Webブラウザーが送信するリファラー情報を制御するために策定されたヘッダーです。

HTTP の Referrer-Policy ヘッダーは、 (Referer ヘッダーによって送られる) リファラー情報をリクエストにどれだけ含めるかを制御します。(https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/Referrer-Policyより引用)

リファラー情報は、Refererヘッダーで送られる情報を指します。Refererヘッダーにはリンク元のアドレス情報が含まれており、これによりWebサイトの管理者や開発者はサイト訪問者がどこから辿って来たかを識別できます。Referrer-Policyヘッダーを利用すると、リファラーに含める情報を調整したり、外部のWebサイトにリファラー情報を送信しないように挙動を変えることなどが可能になります。

kintoneでリンクをクリックした時の挙動

kintoneには、Webサイトのアドレスや電話番号、メールアドレスを表示するのに利用される「リンクフィールド」と呼ばれるフィールドがあります。

リンクフィールドはWebサイトのアドレス、電話番号、メールアドレスを表示するのに利用される

例えば、「https://」で始まるWebサイトのアドレスをリンクフィールドに入力しておいた状態でリンクをクリックすると、別タブでページが開きます。その際、WebブラウザーはRefererヘッダーをリンク先のWebサイトに送信します。kintoneのURLが「example.cybozu.com」である場合には、サブドメイン「example」を含めた形でリファラー情報が送信されることになります。

Webサイトのアドレスをクリックしてページを開くことが可能

サブドメインは、kintoneにログインするときに必要となる情報の1つという捉え方もできます。kintoneには、IPアドレス制限やBasic認証、有償のセキュアアクセスなど、適切にセキュリティを高めるための機能も用意されており、サブドメインを知られてしまっただけで即危険ということはありません。ですが、必要なければサブドメインを第三者にはできるだけ知られたくないというのも人情ではないでしょうか。

kintoneでリファラー情報送信ポリシーを設定したい

Referrer-Policyヘッダーを利用してリファラー情報を極力送らないポリシーに変更できないかと思い、このヘッダーについて調べてみると、値に「same-origin」を指定した場合の挙動についての説明がMozillaのページに見つかりました。W3Cのページは英語なので、今回は日本語で解説されていたMozillaのページを紹介したいと思います。

同じオリジンにはリファラーが送信されますが、オリジン間リクエストではリファラー情報が送信されません。(https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/Referrer-Policyより引用)

「same-origin」を指定すれば外部サイトにリファラー情報を送信しなくなることが分かりましたが、そもそもkintoneはReferrer-Policyヘッダーを送出していないようです(2020年1月現在)。

Mozillaのページを読み進めてみると、HTML内にmeta要素を記述するという方法でも、Referrer-Policyヘッダーを送出させることと同様の効果を得られることが分かりました。そこで今回はmeta要素(記述例:「<meta name="referrer" content="same-origin">」)が自動的に追加されるようなkintoneプラグインを作成してみました。

Referrer-Policy for kintoneの概要

今回私が作成した「Referrer-Policy for kintone」は、リファラー情報の外部への送信を極力抑制するリファラーポリシーを設定する、kintone用のプラグインです。

[kintoneシステム管理]でプラグインを読み込む

リファラーポリシーとして「same-origin」を指定した場合の挙動となるように調整しており、プラグインをインストールしたアプリにおいて、リンク先の外部サイトにリファラー情報を極力送信しないようにkintoneを調整できるようにします。

中身はとてもシンプルなものであり、習作として作ったものですが、それなりに有用なものではないかと思います。何かお気付きの点があれば是非ご指摘ください。

Referrer-Policy for kintoneのダウンロード

プラグインはGitHub(https://github.com/emic/referrer-policy-for-kintone/releases/latest)からダウンロードできます。Zip形式の圧縮ファイルをダウンロードしてください。ライセンスはMITライセンスです。

プラグインをインストールしてアプリを更新するだけで機能が有効になります。現在のところ、プラグインで何か設定を行う必要は特にありません。もしも他のプラグインを併用している場合に動作に支障が出た場合には、Referrer-Policy for kintoneの利用を解除してください。

Referrer-Policy for kintoneを利用する上での注意点

Referrer-Policy for kintoneを利用する上での注意点として、“Referrer-Policy: same-origin”に対応していないWebブラウザーを使用している場合には、本プラグインの効果はありません。

2020年1月現在、Internet Explorer、およびGoogle ChromeベースではないMicrosoft Edgeを利用している場合には、リファラー情報の外部への送信は抑制されません(下図はhttps://caniuse.com/#search=Referrer-Policyのスクリーンショット)。

(2020年2月21日追記・訂正:iOSのSafariを利用している場合にリファラー情報の外部への送信は抑制されないと当初記載していましたが、これは誤りでした。iOSのSafariは“Referrer-Policy: same-origin”にすでに対応していたため、iOSのSafariに関する記述を上の段落から削除しました。)

Can I useでは各ブラウザーの対応状況を確認できる

まとめ

Referrer-Policyヘッダーおよびkintone用プラグインであるReferrer-Policy for kintoneの概要について解説しました。Referrer-Policyヘッダーは、一部のWebブラウザーが未対応であるものの、多くのブラウザーが対応するようになってきており、リファラー情報の送信を制御できるようになってきています。Referrer-Policy for kintoneを組み込むことで、可能な限りサブドメイン情報を外部サイトに送信しないように調整できるので、より安心してkintoneを利用できるようになるかと思います。

この記事が気に入ったらサポートをしてみませんか?