Closed3
CSP ヘッダに 'unsafe-inline' を入れる理由
'unsafe-inline' 入れたら Security の意味無いのでは?
そんなふうに考えていた時期が私にもありました。[1]
script-src 'self' 'unsafe-eval' 'unsafe-inline' https: http: 'nonce-${nonce}' 'strict-dynamic'
上記のように CSP ヘッダをセットする例を見かけるけど... 'unsafe-inline' 必要?
と
理由は
古いブラウザでスクリプトを動作させるための fallback
- サイトでインラインスクリプトを利用している。
- インラインスクリプトを CSP のもとセキュアに利用する方法としては
nonceがある。 -
nonce-...の指定があれば、モダンブラウザではunsafe-inlineは無視される。- つまりモダンブラウザではセキュリティが維持された状態でインラインスクリプトが実行できる。
-
nonce-..に対応していないような古いブラウザではunsafe-inlineが有効に働く。- 古いブラウザもスクリプトが実行できるようになる。
- ただし、その場合古いブラウザではセキュリティを犠牲しながらインラインスクリプトを実行することになる
このスクラップは2024/07/13にクローズされました