1

Web サイトでユーザーが送信したカスタム CSS を許可したいと考えています。

スタイルの組み合わせによっては安全ではない場合があることはわかっていますposition:absolute

それでも、そのコンテンツを div でラップしても、上記は問題ありませんposition:relative

また、css を介してスクリプトを実行する可能性がいくつかあると聞きましたが、思い出すことも考えることもできませんでした。

だから私の質問があります:

  • 安全と考えられるのはどれか。
  • そして、ブラックリストには何が入るでしょうか?

理想的には、style="*" タグのコンテンツを受け入れる関数を作成し、それに応じてサニタイズします。

また、どのアプローチがより良いかについて、いくつかのアドバイスを検討します。

  • ブラックリストから安全でない属性を照合して除外する
  • または、ホワイト リストに含まれているものだけをバイパスすることを許可します (ただし、リストは巨大になる可能性があります)。

大砲に大規模な機能がある場合は、これを吐き出すのに適した場所です。:-)

4

1 に答える 1

0

セキュリティの意味を定義する必要があります。「ユーザーに私のレイアウトを壊させてはいけない」という意味であれば、ユーザーに CSS の方法で多くを使用させることはまったくできないと思います。おそらく、フォント、色、および背景をユーザーが変更できるようにすることは問題ありませんが、それを超えると問題が発生します。(margin や padding のようなものでさえ、特に zindex と組み合わせると、任意のフィールドに負の値があると「楽しく」なる可能性があります...) 一般的な経験則として、HTML タグ ( <font><i>など) があった場合ここは大丈夫でしょう。

クロスサイトスクリプティングの問題を防ぎたいという意味でセキュリティについて話している場合は、コードを実行する可能性のある css 項目を禁止する必要があります。(例えば、BoltClock のコメントが示すように)

もし私があなただったら、コメント投稿者のアドバイスに従い、人々に CSS を使用させないようにします。ユーザーにコードをカスタマイズしてもらいたい場合は、それらのカスタマイズを行います。ただし、任意のコードを入力させないでください。人々は常にこの種のフィルターを破っています。

于 2012-08-05T01:15:04.027 に答える