CSP Content Security Policy:コンテンツセキュリティポリシーのdefault-srcとscript-srcが同時に設定されていたらどちらが優先されるかについて解説いたします。

CSP Content Security Policy:コンテンツセキュリティポリシーとは?
CSP Content Security Policy:コンテンツセキュリティポリシー)は 「どの種類のソース(スクリプトや画像、スタイルシートなど)を、どこから読み込んでよいか」をブラウザーに指定しておき、XSS(クロスサイトスクリプティング:外部スクリプトをサイト上で実行してしまう攻撃)を防いだり、万が一サイトの改ざんによって不正なコードが埋め込まれても、サイトにアクセスしたユーザーがそのような不正なスクリプトを実行してしまうのを確実ではないもののある程度未然に防いでくれる仕組みです。HTACCESSファイルに設定を書き込むことで実装することが可能です。
CSP は昨今は、様々な企業のサイトに実装されており、正しく設定されているかが業者様によっては内部監査上必須となっている場合もございます。
default-srcとscript-srcが同時に設定されていたらどうなる?
CSPは、下記のようにHTACCESSにdefault-src(一括指定)、script-src(JAVASCRIPTの読み込み指定)など項目ごとに読み込んでいいソースの出どころを指定します。
※下記設定は自サイトのドメイン内だけのスクリプトの読み込みを許可している非常に厳しい設定の例です。
Header set Content-Security-Policy "default-src 'self'; script-src 'self';"
default-src(一括指定)とscript-src等の他の設定がずれている場合はどうなるのでしょう?
下記の設定は、default-src(一括指定)でself(自ドメインだけ許可)、script-srcはhttps://cdn.example.com、https://api.example.comの2ドメインからのスクリプトの読み込みが許可されるという意味になります。
Header set Content-Security-Policy "default-src 'self'; script-src https://cdn.example.com https://api.example.com;"
良くある勘違いがscript-srcの設定がdefault-srcと合算されるという事です。
つまりscript-srcで読み込めるソースは’self'(自ドメイン)かつ https://cdn.example.comかつhttps://api.example.com;となっていると勘違いされがちです。
しかし実際には合算されず、”default-src ‘self’はscript-src設定で上書きされて無視されます。つまりscript-srcで読み込めるソースは https://cdn.example.com https://api.example.com;の2ドメインのみとなります。
script-srcで自ドメインも許可したい場合は下記のようにSelfを再度指定する必要がございます。
Header set Content-Security-Policy "default-src 'self'; script-src 'self' https://cdn.example.com https://api.example.com;"
default-srcはその他の設定で上書き(置換される)されますが、設定されていない項目の一括指定ができる保険のようなものとお考え頂けるとわかりやすいかと存じます。
ご参考になりましたら幸いです。




