真に安全なコードが必要な場合、ホワイトリスト アプローチ (「これらのもののみを許可する: ...」) は通常、ブラックリスト アプローチ (「これらのものを許可しない: ...」) よりも堅牢です。
あなたは HTML Purifier に言及し、「すべてのイベント属性を削除するオプションはありません」と述べました。
それは...技術的には正しいです。イベント属性を削除するように指示することはできません。ただし、その理由はセールス ポイントです。それは自動的に行われます。「欠けている」オプションは、イベント属性を許可するように HTML Purifier を構成する機能です。それは意図的に間違っています。HTML Purifier (名前が示すように) は、セキュリティに重点を置いています。
HTML Purifier 構成を使用して許可できる「安全でない HTML」の側面がいくつかありますが(デフォルトの構成は意図的に厳選されています)、イベント属性はそれらの中にありません。(まあ、フープを飛び越えれば、HTML Purifier にそれらを受け入れるように教えることができますが、それには多くの労力が必要です。)
ユーザー HTML を受け入れたい場合は、もう一度試してみることをお勧めします。これは、多くの人々によってテストされた、かなり確立されたツールです。
HTML を壊して JavaScript を挿入する非常にトリッキーな方法がいくつかあります。src
たとえば、 orhref
属性を使用して JavaScript を挿入できることをご存知ですか? style
一部のブラウザーでは、タグを使用して JavaScript を挿入できることをご存知ですか? この XSS チートシートを見てください。それは、あなたが何に反対しているのか、そしてなぜホワイトリストが一般的により効率的であると考えられているのか、大まかなアイデアを与えるかもしれません.
いずれにせよ、頑張ってください!