XSS 攻撃に不正な形式のタグが使用されているというコメントを読みました。これらに対してどのようにサニタイズする必要がありますか。HTMLPurifier のようなライブラリを使用する場合、これは作業の一部として取り込まれますか? それともこれは独立したものですか?人の話はあまり聞きません。
4 に答える
HTML Purifierの設計哲学の一部は、ブラウザーの解釈のばらつきを最小限に抑えるために、標準に準拠したHTMLのみを出力することです。したがって、HTMLPurifierは不正な形式のタグを出力しません。
この時代において、XSSから完全に自分自身を保護するには、HTMLPurifierが提供するブラックリストではなくホワイトリストに登録する必要があります。間違ったコンテキストに入れてもhtmlspecialchars($var,ENT_QUOTES);
役に立たないだけでなく、htmlタグと引用符(stringFromChar、バックスラッシュを使用)の両方を使用しないようにする方法はたくさんあるので、別のブラウザ文字セットを検討する必要があります。これにより、たとえばこの攻撃が可能になる可能性があります。実行されるUTF-7\\\+ADw-script+AD4-alert(/xss/)+ADw-/script+AD4---//--
で。HTMLPurifierには大きなオーバーヘッドがありますが、これはXSS攻撃を防ぐための単純な非技術的な方法です(ただし、フィルターにも穴が開いていると思います)。
HTMLPurifierは、実際にはXSS用にサニタイズします。
この場合、HTMLPurifer はやり過ぎです。XSS がタグ内にある場合は、必要なく JavaScript イベントを挿入できます<>
。最近、これは twitter に起こりました。答えは、使用することhtmlspecialchars($var,ENT_QUOTES);
です。