Typefully

Ile adresów ma użytkownik Gmaila?

Avatar

Share

 • 

A day ago

 • 

View on X

Ostatnio jeden z użytkowników Mikrusa nie mógł zalogować się do panelu przez funkcję "zaloguj przez Google". System twierdził, że taki adres mailowy nie istnieje w bazie 🤔 Spoiler: istniał. Problem był gdzie indziej. 🧵 ↓
Użytkownik kupił serwer VPS, podając adres w stylu jankowalski@gmail.com. Następnego dnia chciał się zalogować przez OAuth Google i dostał błąd "nie znaleziono konta". Dlaczego? Bo Google zwracało adres jan.kowalski@gmail.com (z kropkami).
System potraktował jan.kowalski@gmail.com i jankowalski@gmail.com jako dwa różne adresy mailowe, a w rzeczywistości to dokładnie ten sam adres. Gmail po prostu ignoruje kropki w loginie i co ważne, nie tylko kropki.
Kropki, to pierwszy problem. Drugi jest jeszcze bardziej podstępny. Gmail ma drugą domenę: googlemail.com jankowalski@gmail.com = jankowalski@googlemail.com To ten sam adres, ale większość systemów traktuje to jako dwa różne konta, bo w końcu domena jest inna.
Trzeci problem to aliasy dynamiczne. Możesz dopisać po loginie plus i dowolne słowo: jankowalski+mikrus@gmail.com jankowalski+test@gmail.com jankowalski+spam@gmail.com Wszystkie trafiają do tej samej skrzynki, ale w systemach to są oddzielne konta.
Dlaczego to w ogóle problem? Na Mikrusie użytkownicy zaczęli kupować serwery przez własne linki polecające. System antyfraudowy nie łapał duplikatów, bo jankowalski@gmail.com i jan.kowalski@gmail.com to dla niego dwie różne osoby. Spamerzy lubią to ;)
Jeśli limitujesz liczbę kont/zakupów na użytkownika (np. jeden trial na osobę), to bez normalizacji maili z Gmaila masz dziurę w zabezpieczeniach. Jeden adres Gmail może utworzyć teoretycznie nieskończoną liczbę "różnych" kont w Twoim systemie.
Rozwiązanie? Przed sprawdzeniem, czy użytkownik istnieje w bazie, normalizuję adres: 1. Usuwam wszystkie kropki z loginu 2. Usuwam wszystko po znaku plusa 3. Zamieniam googlemail.com na gmail.com Dopiero wtedy szukam duplikatów.
Ważne: w bazie zapisuję adres dokładnie tak, jak podał go użytkownik. Jeśli ktoś chce otrzymywać maile na jan.kowalski+mikrus@gmail.com, to tak właśnie będzie je dostawał. Normalizacja jest jedynie do celów weryfikacji czy konto już istnieje.
Jeśli tworzysz jakiś SaaS i nie masz tego ogarniętego, to sprawdź swoją bazę. Pewnie masz tam duplikaty, które liczysz jako unikalnych użytkowników, a to ten sam gość, który po prostu użył kropki w innym miejscu... albo wielu kropek (jan.ko.wa.lsk.i@gmail.com). Możę to być także spamer, który obchodzi Twoje limity.
Avatar

Jakub Mrugalski 🔥

@uwteam

🤖 Piszę o technologii, automatyzacji, cybersecurity ✍️ Dokumentuję swoją drogę w biznesie 🖥️ mikr.us ← to moje 😎