Найти Π² Π”Π·Π΅Π½Π΅

πŸ•΅οΈβ€β™‚οΈπŸ” Π­ΠΌΠΎΠ΄Π·ΠΈ ΠΈ SQL-ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΡ: ΠΊΠ°ΠΊ Π΄Π²Π° Π±Π°ΠΉΡ‚Π° ΠΏΠΎΠΌΠΎΠ³Π»ΠΈ Π²Π·Π»ΠΎΠΌΠ°Ρ‚ΡŒ ΠšΠ°Π·Π½Π°Ρ‡Π΅ΠΉΡΡ‚Π²ΠΎ БША

Пока вСсь ΠΌΠΈΡ€ готовился ΠΊ ΠΏΡ€Π°Π·Π΄Π½ΠΎΠ²Π°Π½ΠΈΡŽ Нового Π³ΠΎΠ΄Π°, Π² ΠœΠΈΠ½ΠΈΡΡ‚Π΅Ρ€ΡΡ‚Π²Π΅ финансов БША (US Treasury) Ρ†Π°Ρ€ΠΈΠ»Π° ΠΏΠ°Π½ΠΈΠΊΠ°. ΠžΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ΡΡ, прямо ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΡ€Π°Π·Π΄Π½ΠΈΠΊΠ°ΠΌΠΈ стало извСстно, Ρ‡Ρ‚ΠΎ китайскиС Ρ…Π°ΠΊΠ΅Ρ€Ρ‹ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΏΡ€ΠΎΠ½ΠΈΠΊΠ»ΠΈ Π² ΠΈΡ… систСмы. И ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° этого Π±Ρ‹Π»Π° Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ абсурдной, Ρ‡Ρ‚ΠΎ Π΅Ρ‘ слоТно ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΄Π°ΠΆΠ΅ Π² голливудском блокбастСрС ΠΏΡ€ΠΎ Ρ…Π°ΠΊΠ΅Ρ€ΠΎΠ²: всСго Π΄Π²Π° Π½Π΅Π²ΠΈΠ½Π½Ρ‹Ρ… Π±Π°ΠΉΡ‚Π°, «спрятанных» Π² эмодзи ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Ρ… Ρ‡Π΅Ρ€Π΅Π· Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… PostgreSQL, Π²Π·Π»ΠΎΠΌΠ°Π»ΠΈ систСму государствСнного уровня. Π”Π°Π²Π°ΠΉΡ‚Π΅ вмСстС Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ, ΠΊΠ°ΠΊ Ρ‚Π°ΠΊΠΎΠ΅ Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΌΠΎΠ³Π»ΠΎ ΡΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ простая SQL-ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΡ Π΄ΠΎ сих ΠΏΠΎΡ€ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Π°. 30 дСкабря 2024 Π³ΠΎΠ΄Π° стало извСстно, Ρ‡Ρ‚ΠΎ Π°Ρ‚Π°ΠΊΠ° Π½Π° казначСйство БША ΠΏΡ€ΠΎΡˆΠ»Π° Ρ‡Π΅Ρ€Π΅Π· популярный PAM-инструмСнт (Privileged Access Management - Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ доступом) ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Beyond Trust. Но настоящая ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° оказалась Π³Π»ΡƒΠ±ΠΆΠ΅: это Π±Ρ‹Π»Π° ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π² PostgreSQL, ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· самых Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½Ρ‹Ρ… ΠΈ ΠΈΠ·ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… open-source Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΈΡ€Π°. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° β€” Π² классичСской SQL-ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΠΈ, которая ΠΎΡΡ‚Π°Π»Π°ΡΡŒ Π½Π΅Π·Π°ΠΌΠ΅Ρ‡Π΅Π½Π½ΠΎΠΉ ΠΏΠΎΡ‡Ρ‚ΠΈ дСсятилСтиС,
ОглавлСниС

Пока вСсь ΠΌΠΈΡ€ готовился ΠΊ ΠΏΡ€Π°Π·Π΄Π½ΠΎΠ²Π°Π½ΠΈΡŽ Нового Π³ΠΎΠ΄Π°, Π² ΠœΠΈΠ½ΠΈΡΡ‚Π΅Ρ€ΡΡ‚Π²Π΅ финансов БША (US Treasury) Ρ†Π°Ρ€ΠΈΠ»Π° ΠΏΠ°Π½ΠΈΠΊΠ°. ΠžΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ΡΡ, прямо ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΡ€Π°Π·Π΄Π½ΠΈΠΊΠ°ΠΌΠΈ стало извСстно, Ρ‡Ρ‚ΠΎ китайскиС Ρ…Π°ΠΊΠ΅Ρ€Ρ‹ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΏΡ€ΠΎΠ½ΠΈΠΊΠ»ΠΈ Π² ΠΈΡ… систСмы. И ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° этого Π±Ρ‹Π»Π° Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ абсурдной, Ρ‡Ρ‚ΠΎ Π΅Ρ‘ слоТно ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΄Π°ΠΆΠ΅ Π² голливудском блокбастСрС ΠΏΡ€ΠΎ Ρ…Π°ΠΊΠ΅Ρ€ΠΎΠ²: всСго Π΄Π²Π° Π½Π΅Π²ΠΈΠ½Π½Ρ‹Ρ… Π±Π°ΠΉΡ‚Π°, «спрятанных» Π² эмодзи ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Ρ… Ρ‡Π΅Ρ€Π΅Π· Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… PostgreSQL, Π²Π·Π»ΠΎΠΌΠ°Π»ΠΈ систСму государствСнного уровня.

Π”Π°Π²Π°ΠΉΡ‚Π΅ вмСстС Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ, ΠΊΠ°ΠΊ Ρ‚Π°ΠΊΠΎΠ΅ Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΌΠΎΠ³Π»ΠΎ ΡΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ простая SQL-ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΡ Π΄ΠΎ сих ΠΏΠΎΡ€ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Π°.

πŸ“Œ Π§Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ?

30 дСкабря 2024 Π³ΠΎΠ΄Π° стало извСстно, Ρ‡Ρ‚ΠΎ Π°Ρ‚Π°ΠΊΠ° Π½Π° казначСйство БША ΠΏΡ€ΠΎΡˆΠ»Π° Ρ‡Π΅Ρ€Π΅Π· популярный PAM-инструмСнт (Privileged Access Management - Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ доступом) ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Beyond Trust. Но настоящая ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° оказалась Π³Π»ΡƒΠ±ΠΆΠ΅: это Π±Ρ‹Π»Π° ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π² PostgreSQL, ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· самых Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½Ρ‹Ρ… ΠΈ ΠΈΠ·ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… open-source Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΈΡ€Π°.

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° β€” Π² классичСской SQL-ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΠΈ, которая ΠΎΡΡ‚Π°Π»Π°ΡΡŒ Π½Π΅Π·Π°ΠΌΠ΅Ρ‡Π΅Π½Π½ΠΎΠΉ ΠΏΠΎΡ‡Ρ‚ΠΈ дСсятилСтиС, ΡΠΏΡ€ΡΡ‚Π°Π²ΡˆΠΈΡΡŒ Π² Π½Π΅ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎΠΌ мСстС. Π₯Π°ΠΊΠ΅Ρ€Ρ‹ использовали всСго Π΄Π²Π° Π±Π°ΠΉΡ‚Π°: c0 27. Π­Ρ‚ΠΈ Π±Π°ΠΉΡ‚Ρ‹ выглядят Π½Π΅Π²ΠΈΠ½Π½ΠΎ, Π½ΠΎ ΠΊΡ€ΠΎΡŽΡ‚ Π² сСбС Ρ…ΠΈΡ‚Ρ€Ρ‹ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, Π·Π°ΡΡ‚Π°Π²ΠΈΠ²ΡˆΠΈΠΉ PostgreSQL «слСпо Π΄ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒΡΡΒ» Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ доступ ΠΊ систСмС.

βš™οΈ ВСхничСскиС подробности Π²Π·Π»ΠΎΠΌΠ°

Π’ΠΈΠ½ΠΎΠ²Π½ΠΈΠΊΠΎΠΌ оказался ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Unicode Π² PostgreSQL. Π’ΠΎΡ‚ ΠΊΠ°ΠΊ это ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ Π½Π° тСхничСском ΡƒΡ€ΠΎΠ²Π½Π΅:

πŸ’» Π¨Π°Π³ 1:
Π‘Π½Π°Ρ‡Π°Π»Π° Ρ…Π°ΠΊΠ΅Ρ€Ρ‹ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ»ΠΈ строку, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΡƒΡŽΡΡ с Π±Π°ΠΉΡ‚Π° 0xc0. PostgreSQL воспринял Π΅Ρ‘ ΠΊΠ°ΠΊ Π½Π°Ρ‡Π°Π»ΠΎ Π΄Π²ΡƒΡ…Π±Π°ΠΉΡ‚ΠΎΠ²ΠΎΠ³ΠΎ символа Unicode. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Unicode-символы ΠΊΠΎΠ΄ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΎΡ‚ 1 Π΄ΠΎ 4 Π±Π°ΠΉΡ‚ΠΎΠ². Π­ΠΌΠΎΠ΄Π·ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ΄ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Ρ‡Π΅Ρ‚Ρ‹Ρ€ΡŒΠΌΡ.

πŸ” Π¨Π°Π³ 2:
Postgres ΠΎΠΆΠΈΠ΄Π°Π», Ρ‡Ρ‚ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π±Π°ΠΉΡ‚ Ρ‚ΠΎΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‡Π°ΡΡ‚ΡŒΡŽ этого Unicode-символа, Π½ΠΎ вмСсто Π½Π΅Π³ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» Π±Π°ΠΉΡ‚ 0x27, Ρ‡Ρ‚ΠΎ соотвСтствуСт ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½ΠΎΠΉ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ΅ '.

πŸ”₯ Π¨Π°Π³ 3:
ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ Π±Π°Π³ Π±Ρ‹Π» Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ PQescapeStringInternal β€” ΠΎΠ½Π° Π½Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ»Π° ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ Unicode-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π° просто взяла ΠΈ «пСрСписала» ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΡƒ, оставив Π΅Ρ‘ Π±Π΅Π· Π·Π°Ρ‰ΠΈΡ‚Ρ‹. Π­Ρ‚ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Π»ΠΎ Π΄Π²Π΅Ρ€ΡŒ для классичСской SQL-ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΠΈ.

πŸ› οΈ Π¨Π°Π³ 4:
Beyond Trust использовали Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ libpq ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ psql, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ Ρ…Π°ΠΊΠ΅Ρ€Π°ΠΌ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, Π½ΠΎ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π½Π° сСрвСрС, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ запуск ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Ρ‡Π΅Ρ€Π΅Π· \! command.

Π’ΠΎΡ‚ Ρ‚Π°ΠΊ, Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ°Ρ€Ρƒ символов, вся систСма Π±Ρ‹Π»Π° Π²Π·Π»ΠΎΠΌΠ°Π½Π°.

🧐 ΠŸΠΎΡ‡Π΅ΠΌΡƒ Ρ‚Π°ΠΊ Π΄ΠΎΠ»Π³ΠΎ Π½Π΅ Π·Π°ΠΌΠ΅Ρ‡Π°Π»ΠΈ ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ?

Π‘Π°ΠΌΠΎΠ΅ ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ здСсь β€” Π΄ΠΎΠ»Π³ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ уязвимости. PostgreSQL β€” ΠΎΠ΄ΠΈΠ½ ΠΈΠ· самых Π½Π°Π΄Ρ‘ΠΆΠ½Ρ‹Ρ… open-source ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ провСряСмый тысячами спСциалистов ΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ. Как Ρ‚Π°ΠΊΠΎΠ΅ ΠΌΠΎΠ³Π»ΠΎ ΡΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ?

Π•ΡΡ‚ΡŒ Π΄Π²Π΅ Π³Π»Π°Π²Π½Ρ‹Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹:

🎯 Узкая спСциализация Π±Π°Π³Π°.
Π­Ρ‚Π° ошибка Π±Ρ‹Π»Π° спСцифичной ΠΈ ΠΌΠΎΠ³Π»Π° ΠΏΡ€ΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΎΡ‡Π΅Π½ΡŒ Ρ€Π΅Π΄ΠΊΠΈΡ… сцСнариях использования PostgreSQL Ρ‡Π΅Ρ€Π΅Π· CLI-интСрфСйс (psql).

🧩 БлСпая Π²Π΅Ρ€Π° Π² старыС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ.
МногиС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ»ΠΈ ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π½Π° встроСнныС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ экранирования строк. Никто Π½Π΅ ΠΎΠΆΠΈΠ΄Π°Π», Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ стандартная функция экранирования ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ SQL-ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΠΈ.

πŸ›‘οΈ Π£Ρ€ΠΎΠΊΠΈ ΠΈ Π²Ρ‹Π²ΠΎΠ΄Ρ‹ ΠΈΠ· ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚Π°

Π­Ρ‚ΠΎΡ‚ случай Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ Π½Π°ΠΌ нСсколько Π²Π°ΠΆΠ½Ρ‹Ρ… Π²Π΅Ρ‰Π΅ΠΉ:

βœ… Никогда Π½Π΅ довСряй ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½ΠΎΠΌΡƒ ПО.
Π›ΡŽΠ±Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΈΠ»ΠΈ инструмСнт ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ нСизвСстныС уязвимости, особСнно связанныС с ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ строк ΠΈ Unicode.

βœ… ВсСгда провСряй Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ прилоТСния.
ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹Π΅ запросы (prepared statements) – ваТнСйшая Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ SQL-ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΠΉ. Π˜Ρ… слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ всСгда ΠΈ Π²Π΅Π·Π΄Π΅.

βœ… ΠŸΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Unicode Π²Π°ΠΆΠ½Π΅Π΅, Ρ‡Π΅ΠΌ каТСтся.
БСгодня ΠΏΠΎΡ‡Ρ‚ΠΈ любоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ сталкиваСтся с ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ многоязычных тСкстов ΠΈ эмодзи. Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ начинаСтся с Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ³ΠΎ понимания Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ строки.

🎭 Π›ΠΈΡ‡Π½ΠΎΠ΅ ΠΌΠ½Π΅Π½ΠΈΠ΅ Π°Π²Ρ‚ΠΎΡ€Π°

Π˜Π½Ρ†ΠΈΠ΄Π΅Π½Ρ‚ с казначСйством БША β€” ΠΏΠΎΡ‚Ρ€ΡΡΠ°ΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΎΠ³ΠΎ, насколько слоТной ΠΈ Π·Π°ΠΏΡƒΡ‚Π°Π½Π½ΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ соврСмСнная ΠΊΠΈΠ±Π΅Ρ€Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ. Казалось Π±Ρ‹, банальная SQL-ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΡ ΡƒΠΆΠ΅ Π΄Π°Π²Π½ΠΎ ΠΈΠ·ΡƒΡ‡Π΅Π½Π° ΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Π»Π° ΡƒΠΉΡ‚ΠΈ Π² ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ. Но Π½Π° Π΄Π΅Π»Π΅ Π΄Π°ΠΆΠ΅ Π»ΡƒΡ‡ΡˆΠΈΠ΅ ΡƒΠΌΡ‹ индустрии всё Π΅Ρ‰Ρ‘ Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ критичСскиС ошибки, связанныС с ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ простых символов.

Π‘Π°ΠΌΠΎΠ΅ интСрСсноС, ΠΏΠΎΠΆΠ°Π»ΡƒΠΉ, Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ вСсь этот Π²Π·Π»ΠΎΠΌ умСстился Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ Π² Π΄Π²ΡƒΡ… Π±Π°ΠΉΡ‚Π°Ρ…: Ρ‡ΡƒΡ‚ΡŒ большС ΠΎΠ΄Π½ΠΎΠ³ΠΎ символа. Π£Π΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈ ΠΏΡƒΠ³Π°ΡŽΡ‰Π΅ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ.

А Π΅Ρ‰Ρ‘ ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ Π°Ρ‚Π°ΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π΄Π°ΠΆΠ΅ Π² эмодзи. Π’Π΅Π΄ΡŒ ΠΎΠ½ΠΈ Ρ‚ΠΎΠΆΠ΅ Unicode, ΠΈ, ΠΊΠ°ΠΊ оказалось, Ρ‡Π΅Ρ€Π΅Π· Π½ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ Π±ΠΎΠ»Π΅Π΅ слоТныС Β«Ρ‚Π°ΠΉΠ½Ρ‹Π΅Β» Π΄Π°Π½Π½Ρ‹Π΅.

🌟 Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½Ρ‹Π΅ Ρ„Π°ΠΊΡ‚Ρ‹:

πŸ”Ή Π­ΠΌΠΎΠ΄Π·ΠΈ способны Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ скрытыС Π΄Π°Π½Π½Ρ‹Π΅.
Π˜Π·Π²Π΅ΡΡ‚Π΅Π½ случай, ΠΊΠΎΠ³Π΄Π° ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Пол Π‘Π°Ρ‚Π»Π΅Ρ€ смог Β«ΡΠΏΡ€ΡΡ‚Π°Ρ‚ΡŒΒ» ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ прямо Π²Π½ΡƒΡ‚Ρ€ΠΈ эмодзи β€” это ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ для скрытой ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

πŸ”Έ Π›ΡŽΠ±ΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Β«ΡƒΡΡ‹Π½ΠΎΠ²ΠΈΡ‚ΡŒΒ» эмодзи.
Π—Π° $5000 ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΡΡ‚Π°Ρ‚ΡŒ «спонсором» символа Unicode. Π­Ρ‚ΠΈΠΌ ΡƒΠΆΠ΅ воспользовались ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Π²Ρ€ΠΎΠ΄Π΅ Buffalo Wild Wings (спонсор ΠΊΡƒΡ€ΠΈΠ½ΠΎΠΉ Π½ΠΎΠΆΠΊΠΈ πŸ—) ΠΈ Π΄Π°ΠΆΠ΅ бСйсбольная ΠΊΠΎΠΌΠ°Π½Π΄Π° Oakland Athletics (усыновили ⚾, 🐘 ΠΈ 🌳).

πŸ“š Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊΠΈ ΠΈ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ссылки:

Π­Ρ‚ΠΎΡ‚ случай β€” Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΈΠ· нас: ΠΌΠΈΡ€ ИВ-бСзопасности ΠΏΠΎΠ»ΠΎΠ½ ΡΡŽΡ€ΠΏΡ€ΠΈΠ·ΠΎΠ², ΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° Π΄Π°ΠΆΠ΅ эмодзи ΠΌΠΎΠ³ΡƒΡ‚ ΡΡ‚Π°Ρ‚ΡŒ ΡƒΠ³Ρ€ΠΎΠ·ΠΎΠΉ Π½Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ бСзопасности! 🌐πŸ˜