CppCMS用に C++ でシンプルで効率的な XSS フィルターを実装する必要があります。PHP は C++ を使用した高性能なフレームワークであるため、既存の PHP で作成された高品質なフィルターは使用できません。
基本的な考え方は、HTML タグの while リストとこれらのタグのオプションのホワイト リストを持つフィルタを提供することです。例えば。典型的な HTML 入力は、、、
<b>
タグ<i>
、および を<a>
含むタグで構成できますhref
。しかし、許可された単純なリンクにも XSS が含まれている可能性があるため、単純な実装では十分ではありません。
<a href="javascript:alert('XSS')">Click On Me</a>
そこには他にも多くの例があります。そのため、href/src などのタグのプレフィックスのホワイト リストを作成する可能性についても検討しました。(https?|ftp)://
質問:
- これらの仮定は、ほとんどの目的に対して十分に適切ですか? タグのオプションを指定せず
style
、プレフィックスのホワイトリストを使用して src/href をチェックすると、XSS の問題が解決するということですか? この方法で修正できない問題はありますか? - HTML/XHTML の正式な文法に関する適切なリファレンスはありますか?
<script>