ИспользованиС ΠΏΠΎΡ…ΠΎΠΆΠΈΡ… Unicode-символов для ΠΎΠ±Ρ…ΠΎΠ΄Π° Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ

GitHub оказался ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½ Π°Ρ‚Π°ΠΊΠ΅, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅ΠΉ Π·Π°Ρ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ доступ ΠΊ ΡƒΡ‡Ρ‘Ρ‚Π½ΠΎΠΉ записи Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΡΡ†ΠΈΡŽ с Unicode-символами Π² email. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° связана с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ символы Unicode ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ прСобразования Π² Π½ΠΈΠΆΠ½ΠΈΠΉ ΠΈΠ»ΠΈ Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ рСгистр Ρ‚Ρ€Π°Π½ΡΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ символы, Π±Π»ΠΈΠ·ΠΊΠΈΠ΅ ΠΏΠΎ Π½Π°Ρ‡Π΅Ρ€Ρ‚Π°Π½ΠΈΡŽ (ΠΊΠΎΠ³Π΄Π° нСсколько Ρ€Π°Π·Π½Ρ‹Ρ… символов Ρ‚Ρ€Π°Π½ΡΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² ΠΎΠ΄ΠΈΠ½ символ — Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚ΡƒΡ€Π΅Ρ†ΠΊΠΈΠΉ символ «ı» ΠΈ «i» ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠΈ Π² Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ рСгистр ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ Π² «I»).

ΠŸΠ΅Ρ€Π΅Π΄ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π²Ρ…ΠΎΠ΄Π° Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… сСрвисах ΠΈ прилоТСниях ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅ Π²Π½Π°Ρ‡Π°Π»Π΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ Π² Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ ΠΈΠ»ΠΈ Π½ΠΈΠΆΠ½ΠΈΠΉ рСгистр, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ΡΡ Π² Π‘Π”. Если сСрвис допускаСт ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ unicode-символов Π² Π»ΠΎΠ³ΠΈΠ½Π΅ ΠΈΠ»ΠΈ email, Ρ‚ΠΎ Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠΈΠ΅ unicode-символы для ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π°Ρ‚Π°ΠΊΠΈ, ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ коллизиями Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… прСобразования рСгистра символов (Unicode Case Mapping Collisions).

‘ß’.toUpperCase() == ‘ss’.toUpperCase() // 0x0131
‘K’.toLowerCase() == ‘K’.toLowerCase() // 0x212A
‘John@Gıthub.com’.toUpperCase() == ‘[email protected]’.toUpperCase()

Π’ GitHub Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠΎΠ³ Ρ‡Π΅Ρ€Π΅Π· Ρ„ΠΎΡ€ΠΌΡƒ восстановлСния Π·Π°Π±Ρ‹Ρ‚ΠΎΠ³ΠΎ пароля ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ ΠΊΠΎΠ΄Π° восстановлСния Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ email Ρ‡Π΅Ρ€Π΅Π· ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π² Ρ„ΠΎΡ€ΠΌΠ΅ адрСса, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π³ΠΎ unicode-символ, Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ коллизию (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, вмСсто [email protected] указывался email mı[email protected]). АдрСс ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΠ» ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ прСобразовывался Π² Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ рСгистр ΠΈ совпадал с исходным адрСсом ([email protected] ), Π½ΠΎ ΠΏΡ€ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ΅ письма подставлялся ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒ ΠΈ ΠΊΠΎΠ΄ восстановлСния ΡƒΡ…ΠΎΠ΄ΠΈΠ» ΠΏΠΎ ΠΏΠΎΠ΄Π΄Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ адрСсу (mı[email protected]).

НСкоторыС ΠΈΠ· символов, Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΈ ΠΏΡ€ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ рСгистра:

ß 0x00DF SS
ı 0x0131 I
ſ 0x017F S
ff 0xFB00 FF
fi 0xFB01 FI
fl 0xFB02 FL
ffi 0xFB03 FFI
ffl 0xFB04 FFL
ſt 0xFB05 ST
st 0xFB06 ST
K 0x212A k

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru