HTML のサブセット (tinyMCE を使用した入力) を使用するユーザー入力があるという一般的な状況があります。XSS 攻撃に対するサーバー側の保護が必要であり、人々がこれを行うために使用している十分にテストされたツールを探しています。PHP 側では、仕事をする HTMLPurifier のようなライブラリがたくさん見られますが、.NET では何も見つからないようです。
私は基本的に、タグのホワイトリスト、それらのタグの属性にフィルターをかけ、a:href や img:src のような「難しい」属性で正しいことを行うライブラリを探しています。
http://refactormycode.com/codes/333-sanitize-htmlでJeff Atwood の投稿を見たことがありますが、それがどれほど最新のものかはわかりません。サイトが現在使用しているものとはまったく関係がありますか? いずれにせよ、有効な入力を正規表現しようとする戦略に満足できるかどうかはわかりません。
このブログ投稿では、より説得力のある戦略と思われるものを紹介しています。
このメソッドは、実際に HTML を解析して DOM にし、それを検証してから、そこから有効な HTML を再構築します。HTML 解析で不正な HTML を適切に処理できる場合は、すばらしいことです。そうでない場合でも、大したことではありません。ユーザーは tinyMCE エディターを使用する必要があるため、整形式の HTML を要求できます。どちらの場合も、私が知っている安全で整形式の HTML を書き直しています。
問題は、そのアルゴリズムを実際に実行するライブラリへのリンクがなく、単なる説明であることです。
そのようなライブラリは存在しますか?そうでない場合、優れた .NET HTML 解析エンジンは何でしょうか? また、追加の検証 a:href、img:src を実行するには、どの正規表現を使用する必要がありますか? ここで他に重要なものがありませんか?
ここでバギーホイールを再実装したくありません。確かに、一般的に使用されるライブラリがいくつかあります。何か案は?