Konferencja Mega Sekurak Hacking Party w Krakowie – 26-27 października!
Mikołajki z sekurakiem! od 2 do 8 grudnia!
Konferencja Mega Sekurak Hacking Party w Krakowie – 26-27 października!
Mikołajki z sekurakiem! od 2 do 8 grudnia!
Ciekawy przykład, który w zasadzie może wystąpić w każdej aplikacji webowej. Otóż przy próbie resetu hasła, GitHub podany adres mailowy najpierw robił lowercase, a później porównywał z tym w bazie. W czym problem? W Unicode.
Przykład?
Czyli jeśli założyłem sobie maila z np. tureckim i w nazwie, toLowerCase() normalizował to do zwykłego ‘i’. A następnie wysyłał maila z tokenem umożliwiającym reset hasła do oryginalnego maila.
Innymi słowy zakładam np. konto mıchal@popularna-domena.com i zgarniam token, który powinien dostać michal@popularna-domena.com. Przy waszych testach warto sprawdzić też triki typu: domena gmaıl.com, inne tego typu “dziwne” litery czy inne miejsca niż e-mail, w których możliwe jest użycie Unicode.
–ms
Ciekawy temat, i chyba nawet na czasie. Nasza kochana Poczta; i możliwość komunikowania się przez nią. Pan pośrednik, zaglądający przez ramię? Jest on, czy go niema? Jaka poczta jest najlepsza; w domyśle, najbezpieczniejsza?
Problem jak zwykle w dającym raka Javascripcie. Mroczne czasy.
Ale przecież “problem” jest w Unicode, a nie w danym języku programowania ;)
Przecież GitHub jest napisany w Ruby…
Problem nie leży w Unicode, tylko w jego leniwej implementacji. https://en.wikipedia.org/wiki/Dotted_and_dotless_I#In_computing – Unicode jest projektowane tak, żeby tego typu znaki, mimo tego, że graficznie identyczne, miały inne kody. Problem z ß jest ten sam, ale leniwa interpretacja podobno dotyczy Chrome – testowałem kilka języków i przeglądarek (bez Chrome) i nie znalazłem takiej, która by przerabiała ß na ss. https://en.wikipedia.org/wiki/%C3%9F#Keyboards_and_encoding – problem interpretacji tym bardziej widać po tym, że Wasze ß już jest małą literą. W mojej przeglądarce ‘ẞ’.toLowerCase() === “ß”
Na te podatnosc nalozyl sie grzeszek Githubowcow – porownac, porownali, ale token wysylali na adres podany przez usera, a nie ten odnaleziony w bazie.
nice one :]