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
が有効に働く。- 古いブラウザもスクリプトが実行できるようになる。
- ただし、その場合古いブラウザではセキュリティを犠牲しながらインラインスクリプトを実行することになる
このスクラップは4ヶ月前にクローズされました