web-dev-qa-db-ja.com

コンテンツセキュリティポリシーによるXSS防止

コンテンツセキュリティポリシー(CSP)は、最新のブラウザーでのXSS攻撃のリスクと影響をどのようにして大幅に削減できますか?

XSSを実行するためにCSPを回避することは可能ですか?

28
Ali Ahmad

はい、CSPはXSSを防御するのに大いに役立ちます。 「コンテンツセキュリティポリシーXSS」でGoogle検索を行う場合、最初のいくつかのリンクでその方法と理由を説明しています。

Googleの使用に問題がある場合は、CSPがXSSに対してどのように防御するかを説明するのに役立つリンクをいくつか紹介します。

CSPポリシーはブラウザーによって適用されます。したがって、適切なCSPポリシーを設定し、ブラウザーにバグがないと仮定すると、CSPをバイパスする方法はありません。これがCSPの魅力の1つです。

一部のブラウザー(例:IE10と以前のバージョンのIE、正しく思い出せば)はCSPをサポートしていません。

CSPは特効薬ではないことに注意してください。

  • CSPポリシーで 'unsafe-eval'を有効にしても、CSPはDOMベースのXSS(クライアント側XSSとも呼ばれる)を停止しません。 DOMベースのXSSを防ぐには、Javascriptを慎重に記述して、このような脆弱性の導入を回避する必要があります。

  • CSPは、ほとんどの形式のスクリプトインジェクションを停止しますが、マークアップインジェクションは停止しません。たとえば、 ポストXSSの世界からのポストカード 、およびセクションIII-AのHTMLフォームインジェクション攻撃を参照してください。 自己流出:ブラウザによる情報フロー制御の危険性 (Chen et al、W2SP 2012)。したがって、コードにインジェクションバグを導入しないようにする必要があります。

CSPで解決できない問題の詳細については、 コンテンツセキュリティポリシーの範囲を超えるいくつかのこと も参照してください。

20
D.W.

CSPは、特定のコンテンツポリシーをスクリプトに適用することで機能します。 「外部スクリプトなし」または「インラインスクリプトなし」。 XSSケースの99%がインラインスクリプトまたはオフサイトスクリプトへの参照を含むため、XSSは非常に困難になります。唯一の欠点は、JavaScriptを完全に禁止していることと、CSPに準拠したJavaScript対応のサイトを作成するのが非常に難しいことです。

mayをバイパスすることは可能ですが、使用するポリシーと脆弱性の種類によって異なりますが、一般的には非常に強固なシステムです。機密コンテンツがあり、JavaScriptがないサイトの場合は、制限付きのポリシーを設定することを強くお勧めします。

3
Polynomial