私は最近読んだ TF-7 XSS攻撃に関するNed Batcheldersの記事 。私は 彼の例 をテストしましたが、最新のブラウザで動作するようにUTF-7攻撃を受けることができませんでした。私は最近のバージョンのFirefox、ChromeおよびSafariを試しました。
ChromeにはいくつかのXSS攻撃防止メカニズムがあることを知っていますが、私の経験では、FirefoxはJavaScriptが壊れている場合でもJavaScriptを実行するより「寛大な」メカニズムを備えています-しかし、これらのブラウザはどれもサイトがUTF-7文字セットを使用している(ただし明示的に宣言していない)場合は、デフォルトでUTF-7文字セットを選択します。
それで、なぜこれが機能しなくなったのか誰か知っていますか?セキュリティ上の理由から、UTF-7検出メカニズムが変更されたようです。ドキュメント内の文字セット宣言を変更したり、ヘッダーを操作したりする方法がない場合でも、UTF-7攻撃は最新のブラウザーを標的にすることができますか?
この悪用は、古いバージョンのInternet Explorerでのみ可能です。最近のブラウザは、エンコーディングをUTF-7として自動検出しません。
これは、エンコーディングタイプを変更しない限り、最新のブラウザでは機能しません。そのため、完全にサポートされていないとマークされています。
ウィキペディア :-
この問題を軽減するには、システムは検証前にデコードを実行し、UTF-7の自動検出を回避する必要があります。古いバージョンのInternet Explorerは、ページをUTF-7として解釈するようにだまされる可能性があります。
Chrome および Firefox は、どの形式でもUTF-7をサポートしないようです。 HTML5仕様によると :
ユーザーエージェントは、WHATWGエンコーディング標準で定義されたエンコーディングをサポートする必要があります。ユーザーエージェントは他のエンコーディングをサポートするべきではありません。
ユーザーエージェントは、CESU-8、UTF-7、BOCU-1、およびSCSUエンコーディングをサポートしてはなりません。 [CESU8][UTF7][BOCU1][SCSU]
EBCDICに基づくエンコーディングのサポートは特にお勧めしません。このエンコーディングは、一般に公開されているWebコンテンツにはほとんど使用されません。 UTF-32のサポートも特に推奨されません。このエンコーディングはほとんど使用されず、頻繁に正しく実装されていません。