Explorerです。Explorerであれば、「IEですよ。」といったalert()が出てきます。その後、マイクロソフトのサイトにリダイレクトします。Explorerではないブラウザの場合、次のようなalert()が出てきます。スクリーンキャプチャも撮影したので、手元に環境がない方はこちらをご覧ください。http://sandbox.hack.vet/ie/IE_Checker.mp4音はありません。後になって思いましたが、デモページがちゃちなフィッシングサイトっぽいですね。Explorerに対してネガティブキャンペーンをする意図など毛頭ないです。●サンプルコードミニマムなサンプルコードは下記に示します。Explorerで開くと、alert(1)が実行されます。EdgeにおいてはJavaScriptは実行されません。ブランクページと同等の画面になります。●テクニック解説もし、文字エンコーディングに知見があるとするなら、既知のXSS攻撃手法と合わせて考えると良いかもしれません。今回は、これに関連する別件の記事にまとめて解説したいので、具体的な動作原理の解説は差し控えます。Explorer以外のブラウザはJavaScriptコードのシンタックスエラーが発生する、という挙動を逆手に取ったものです。Unicodeで見てみると次のような文字列です。U+7E3AはUTF-8の文字コードをshift_jisで見るいわゆる文字化けでよく遭遇します。CHARACTERです。これは、代替文字という意味で、文字コードを変更した時などに表現できない文字があった場合、この文字が使用されます。サンプルのコードでは、このUnicode二文字「縺�」を変数名として使用しています。これは基本的にはシンタックスエラーになるでしょう。変数名としてU+FFFDは使用が禁止されているので、当然シンタックスエラーとなり、そのJavaScriptコードは実行されません。Explorerはどうやら動作が違うようです。いう変数名は使用できますので、構文的には通ります。JavaScriptコードが実行されるということです。これは、文字エンコーディングが自動判別になった場合、EUCが選択されたため発生する現象です。Explorerの文字エンコーディング自動判別は実行環境によっては変わる可能性があるため、必ずEUCになるとは限りません。ExplorerのJavaScriptエンジンは変数名にU+FFFDを使用できるので、シンタックスエラーにならずにJavaScriptコードが実行されます。次にChromeではどのように表示されるでしょうか。“正しく”シンタックスエラーとなり、JavaScriptコードは実行されませんでした。Explorerかそれ以外かを判定しています。ちなみに、「膰削申」は全く意味不明ですが、翻訳をかけてみると、肉を切るみたいな意味のようです。念の為に申し上げておきますが、まさかこの記事のコードをコピペしてプロダクトに組み込もうと思っていませんか?だいぶBuggyなので実験程度に留めておいてください。別件で調べている事があり、良くなさそうだった場合、この記事を非公開にするかもしれません。●参照情報docs.microsoft.comen.wikipedia.org以下、余談。ここ最近、文字コード、特にUnicodeに興味関心が高くあり、面白そうなことを試行錯誤しています。合成文字(Combining)がホットなキーワードです。所感ですが、文字コードとWebセキュリティは割と密接な関係があると思いました。“文字”のテクニックを調べてみてください。PHPオブジェクトインジェクションの攻撃PHPオブジェクトインジェクションの攻撃に関してまとめました。usage)Overp...検索スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。