2 に答える
これは、HTML仕様に直接違反することになります。それらによって、マークアップに重要な文字はASCII文字ですが、U + FF1C FULLWIDTH LESS-THAN SIGN“ <”のような文字は、特別な意味を持たない単なるデータ文字です。ブラウザは、全角文字をAsciiにマッピングするために追加のコードを必要とします(アドホックマッピングとして、またはたとえばNFKDまたはNFCKCへの正規化を介して)が、そのようなことを行うと想定する理由はありません。 「[」から「&lt;」へのマッピングを開始できます。
したがって、そうでないと主張するブログは、誰かが発明した可能性を説明しているだけですが、本当の理由はありません。あなたは通常、与えられた参考文献とデモンストレーションからこれを見ることができます。(つまり、それらがないことから。)
互いに似ているUnicode文字には確かにセキュリティ上の問題がありますが、「&lt;」の「<」のように、内部的にはかなり異なっていても、人間が誤って1つの文字を別の文字に取ってしまう問題です。(したがって、たとえば、HTMLソース内の文字列は、script
そうではないのに要素として表示されます)または「a」(同じ外観のラテン文字のキリル文字)の場合は「а」。つまり、プログラムでは文字が別個のものであると見なされていても、人々は文字を同一であると見なす可能性があります。
いいえ、ブラウザは全角の LT または GT 記号で囲まれたテキストを有効な HTML タグとして解釈しませんが、特定のバックエンドはそれらを通常の LT または GT 記号に変換し、XSS リスクを引き起こします。以下を参照してください: http://websec.github.io/unicode-security-guide/character-transformations/#best-fit