危険な「〇」文字

上記2件の実行結果です。

Compareでは、CompareOrdinalはマッチせず、CompareのInvariantCultureではマッチします。Ordinal以外では「〇」文字は無視されます。

IndexOfで「〇」文字はすべての文字にヒットします。「あいうえお」くらいしか試してませんが、もしかしたらCharのすべての値にヒットするかもしれません。Ordinal以外のIndexOfではすべてこの問題が起きます。string.IndexOfも同様なので、ASP.NETなどで使う場合は注意が必要です。
さらに、同様の特徴を持った不思議な文字が多数あります。「\u01f6」〜あたりがヒットしまくる文字です。あんまり多いので調べるのやめました。

この2件をMSのセキュリティ問題窓口に報告したけど、セキュリティ上の脆弱性ではない、また各アプリケーションの実装に依存する事象だと返事が来てしまいました。まぁ、大きな問題ではないと思ってたので、それでいいことにしておきます。想像力が欠如した思考停止状態かもしれないので、いやこれは大きい問題になると思った方は注意してくださいね。
それから、自分のシステムに「〇」文字を入れてどうなるか試してみてください。検索で全部ひっかかる裏技としても使えます。自分のアプリではそうでしたw

(id:atsushienoさん、トラバさせていただきま〜す)

(追記)
IndexOfで「〇」だけで検索するとあらゆるものにヒットするのって、ゼロ文字が無視されてIndexOf( str, "" )が実行されるのと同じだからなんですね。今頃気付きました。