「Password」などの不正な文字列をフィルタリングする必要があるのですが、誰かが私のチェック プログラムをバイパスしていることに気付きました。彼らは正確に「パスワード」のように見える文字列を入力しますが、それは等しくありません。Unicode を確認したところ、たとえば、「a」は8e61
で、通常の「a」は61
(hex) です。私の PHP ファイルのエンコーディング、HTML メタ Content-Type、および MySQL エンコーディングは utf-8 です。
これはどのように起こりますか?コードが異なる視覚的に同一の文字があるのはなぜですか? これらの文字をフィルタリングする方法を知りたいです。ここに奇妙な文字列を入れました。調査のためにコピーしてください: パスワード
ここで問題のある「パスワード」をコピーすると、なぜかASCIIで表示されてしまいました。
「パスワード」で PHP 関数 bin2hex() を使用し、以下を取得します。
50c28e61c28e73c28e73c28e776fc28e72c28e64c28e
通常のものは次のとおりです。
50617373776f7264.
簡単にするために、「a」の 16 進数表現は次のとおりです。
c28e61
通常のものは次のとおりです。
61