web-dev-qa-db-ja.com

CSP style-src: 'unsafe-inline'-それだけの価値はありますか?

現在、すべてのサイトでModernizrを使用していますが、その動作方法が原因で判明しましたunsafe-inlineスタイルを許可する。私はすでにインラインスクリプトとスクリプトの安全でない評価を許可していません。インラインスタイルを許可することにはどのようなセキュリティリスクがあるのか​​知りたいですか?

28
anthony-dandrea

インラインスタイルを許可すると、「他のXSS」の影響を受けやすくなります。クロスサイトスタイリング攻撃。

ここでの考え方は、ユーザーがスタイル属性をドキュメントに挿入できる場所ならどこでも、ページの外観を好きなように変更できるということです。深刻度の高い順に並べられた潜在的な攻撃をいくつか挙げます。

  1. 彼らはあなたのページをピンクに変えて、ばかげて見えるようにするかもしれません。
  2. 彼らはあなたのページのテキストを変更するかもしれません、それはあなたがあなたの読者の聴衆を怒らせるかもしれない不快な何かを言っているように見せることです。
  3. 彼らが提供するリンクのようなユーザーが生成したコンテンツを、ユーザーがユーザーのコンテンツを見ると予想する通常の場所の外に表示し、それを公式に見せることができます。 (たとえば、サイトの「ログイン」ボタンを独自のリンクに置き換える)。
  4. 入念に作成されたスタイルルールを使用して、ページに含まれるすべての情報を外部ドメインに送信し、そのデータをユーザーに対して悪意を持って公開または使用する可能性があります。

4番目の例では、unsafe-inlineに関係なく、外部ドメインに情報が漏洩することを完全に防ぐことができます。ただし、他のCSPルールで、信頼できないドメインまたはワイルドカードドメインへの要求を一切許可しないようにする必要があります。しかし、どこかでスタイル属性をブロックし損なった場合、最初の3つは常に可能です。

Mike West CSSConfのこれについては、数年前にいくつかの例を挙げて良い talk を行いました。

32
anthonyryan1