ユーザー提供の CSS が不正でないかどうかを確認/検証する
質問
Web アプリのユーザーがテキスト フィールドを通じてカスタム CSS を保存して、GUI の外観を変更できるようにしたいと考えています。
悪質な CSS ハックが存在しているようです。何を気をつければよいでしょうか?
解決
1つの解決策は、何らかのエディターを介してユーザーオプションを提供し、さまざまな要素の色/サイズを選択できるようにすることです。次に、ユーザーが提供したオプションに基づいて自分でCSSを生成します。
これにより、非標準のCSS、または使用したくないCSSを保存できなくなります。
他のヒント
考えられることが1つあります。CSS式(ただし、IEでのみ評価されます)。これらはCSSファイルでJavaScriptを許可するので、私は次のようなものを取り除きます
property: expression(...);
または単に「許可されていません」をスローするエラー。
しかし、CSSを最初に配置したユーザーに正確に配信した場合、そのユーザー自身がXSSの脆弱性を導入した場合、その責任を負います。
その他の場合:Zeusのソリューションを使用します。
ユーザーがサイトにカスタム構築された CSS を直接組み込むことを許可している場合、ハッカーにそれを乗っ取られるよう求めていることになります。CSS を知っている人だけがこれを実行できるため、実際にはテーマ システムが使いにくくなってしまいます。サイトが特に Web ベースのプログラマ向けでない限り、代わりにユーザーが選択できるテーマのセットを作成するのが最善です。
また、ユーザーが CSS を直接使用するのではなく、ユーザー インターフェイスを通じてページ上の特定のスタイルを変更できるようにする一連のツールをサイト上に作成することもできます。これにより、より多くのユーザーがページのスタイルをより柔軟に設定できるようになりますが、CMS を使用していて、特定の CMS がコアまたはプラグインでこの機能を簡単に許可している場合を除き、通常は開発時間が長くなります。
お役に立てれば。
他の人が言ったことの中で、それらが有効なCSSかどうかを確認します。 http://jigsaw.w3。 org / css-validator /
Zeusの答えを探しますが、CSSパーサーを使用して(検索SO、さまざまな質問があります)、すべての入力を承認済みプロパティのリスト( color
、背景
など)。
ユーザーが自分のCSSのみを変更し、他のユーザーのCSSは変更できない場合、リスクは何ですか? CSSは彼らにのみ提供されるので、最悪の場合、彼らは自分自身をハッキングすることができますか?