Upgrade to Pro — share decks privately, control downloads, hide ads and more …

TC3 社内勉強会 Content Security Policy

TC3 社内勉強会 Content Security Policy

昨今のウェブフロントエンドアプリケーションにおいて、外部サービスとのマッシュアップ(連携)は当たり前のように行われていますが、外部のサービスを完全に信用することはできません。

例えば、突然連携していた外部サービスが第三者によって改ざんされ、ユーザーの入力したクレジットカード情報等を外部に流出させてしまうといった可能性は大いにあります。

この資料では、そういった脆弱性からアプリケーションを守ってくれる Content Security Policy(CSP) について解説しています。

TC3株式会社

October 28, 2022
Tweet

More Decks by TC3株式会社

Other Decks in Programming

Transcript

  1. ©2022 TC3株式会社 Confidential 2
 Content Security Policy (CSP) は、ウェブブラウザ標準の脆弱性動的解析診断ツール サードパーティーのツールを導入してアプリケーションを守っているのに、

    ウェブブラウザ標準のCSPを有効にしていないなんてもったいない! default-src *; ただ設定をONにするのではなく、防ぎたい攻撃を意識して設定をしないと意味がない。 なんかCSPのエラーがコンソールに出ているからといって、以下のようにガバガバな設定をしてしまわないようにしよう。
  2. ©2022 TC3株式会社 Confidential 4
 注: CSPは現在version 2まで公開されており、 version 3がドラフト公開されています。詳細な対応状況は参考リンクをご確認ください。 -

    W3C CSP version 3 working draft(10/14): https://www.w3.org/TR/CSP3/ - 主要ブラウザ実装状況 : https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP#browser_compatibility 主要ブラウザのCSP実装状況
  3. ©2022 TC3株式会社 Confidential 10
 設定例1. 新規開発時 default-src 'self'; 1. まずは自ホストからの

    Fetchのみ許可する default-src 'self'; style-src 'unsafe-inline' https:; img-src 'self' data: blob: https:; font-src https:; 2. 必要に応じて順次制限を緩めていく 3. 運用時には report-to(report-uri) も設定しておく default-src 'self'; style-src 'unsafe-inline' https:; img-src 'self' data: blob: https:; font-src https:; report-to csp-reporting-endpoint
  4. ©2022 TC3株式会社 Confidential 11
 設定例2. 既存アプリケーションに後から追加するとき Content-Security-Policy-Report-Only: default-src 'self'; report-to

    csp-reporting-endpoint 1. エラーにはせず、レポートのみ送信する Datadogにレポートを送信する例 : https://www.datadoghq.com/blog/content-security-policy-reporting-with-datadog/ 2. エラーレポートが十分集まったら、その結果から適切な設定を適用する Content-Security-Policy: default-src 'self'; style-src 'unsafe-inline' https:; img-src 'self' data: blob: https:; font-src https:; report-to csp-reporting-endpoint
  5. ©2022 TC3株式会社 Confidential 12
 Thank you for your attention. G

    I G I N N O V A T E D . If you are interested, please contact to [email protected] .