web-dev-qa-db-ja.com

フィルタリングを回避するために、「<scrscriptipt>」または「selselectect」をどのように使用しますか?

タイトルで説明したのは、一般的な単語のフィルタリングを回避する手法です。

しかし、なぜこのテクニックが機能するのですか?たとえば、SELECTはSELSELECTECTと同じではありません。

21
eez0

私がWord <script>をブラックリストに登録し、それを何も置き換えないとします。その後、<scr<script>ipt><script>になります。

これが、適切に記述されたhtmlサニタイザー/ピューリファイヤーがルールを再帰的に適用する理由です。これは、最後の衛生管理ステップでコンテンツに変更を加えなかった場合にのみ、停止または処理ルールの別のラウンドを適用しません。 (また、処理の回数が多すぎると、失敗してコンテンツが返されない可能性があります)。

24
dr jimbob

これは単にs.Replace("select","")を使用する壊れたサニタイザーに対して機能します。これをselselectectに適用すると、中央のselectが削除されますが、出力では再度実行されないため、分割sel + ectselectになり、消毒剤を生き残ります。

この攻撃は、正気な消毒剤に対しては機能しません。

13
CodesInChaos