IDNAとUTF-8のコードの脆弱性

黒い帽子2019
の原則
IDNとは何か?
、中国の発達、アラビア語などの特別な文字のドメイン名として知られている国際化ドメイン名(国際化ドメイン名、IDN)、インターネットドメイン名に特殊文字や文字の部分的または完全な使用を意味する、ヒーバーまたは英語の手紙のような非ラテンアルファベット言語、からマルチバイトのUnicode符号化後のこれらの言葉。ドメインネームシステムでは、国際化ドメイン名はASCII文字列でPunycodeでの転送とストレージを使用します。

什么是IDNA?
RFC 5891.プロトコルのこのバージョンで指定されたプロトコルをアプリケーションにおける国際化ドメイン名(IDNA)をサポートするライブラリは、多くの場合、「IDNA2008」と呼ばれ、2003年からそれ以前の標準と異なる結果を生成することができます
>>>インポートIDNA
>>>印刷(idna.encode(U 'ドメインテスト。'))
结果:XN - eckwd4c7c.xn - zckzah
>>>印刷idna.decode( 'XN - eckwd4c7c.xn - zckzah')
结果:ドメイン。テスト

デモ
℆この文字は、IDNAエンコードのpython3のためであれば、その後
の印刷( '℆'.encode(' IDNA '
結果
B'C / U'
我々はデコードUTF-8を使用する場合は、
印刷(B'C / U ' .decode(「UTF-8」) )
結果
C / Uは
、このように文字は、いくつかのフィルタリング部位をバイパスすることができ

おすすめ

転載: www.cnblogs.com/cimuhuashuimu/p/11490431.html