2009-10-01 21 views
12

W teorii wiadomości e-mail to case sensitive. Ale używając e-maili jako loginu systemowego chcę, żeby były wszystkie małe litery (np. [email protected] i [email protected] nie mogą być różnymi użytkownikami).Czy mogę bezpiecznie traktować małe litery w adresie e-mail?

Czy może to być problem dla niektórych użytkowników, którzy stosują wielkość liter w swoim adresie e-mail? Czy ktoś go używa?

Edycja: Ponieważ istnieje wiele odpowiedzi "zachowaj przy zapisywaniu, ignoruj ​​przy logowaniu": Ten system zostałby złamany, gdybym naprawdę miał dwóch różnych użytkowników: john @ smith i John @ smith, czyż nie?

Przykład: john @ smith i John @ smith mają hasło 123. Skąd mam wiedzieć, który z nich został właśnie uwierzytelniony?

+2

Założę się, że * ktoś * używa tego. Ale to ich problem. – SilentGhost

+1

@SilentGhost: Nie mogę powiedzieć, że się z tobą zgadzam - to nasz problem jako programistów, i całkiem prosty w tym;) – RedFilter

Odpowiedz

6

W niektórych systemach rozróżniana jest wielkość liter.

Sugerowałbym, aby był zachowany, ale zignorował system plików la windows.

tj. Pamiętaj, że John zapisał się na adres [email protected], ale pozwól mu zalogować się jako [email protected], [email protected] lub [email protected]

Jest mało prawdopodobne, aby powodowało konflikty, a jeśli ktoś ma e-mail z rozróżnianiem wielkości liter, jestem pewien, że będą tego świadomi.

+1

Proszę zobaczyć moją edycję. Myślę, że działałoby to tylko wtedy, gdy zachowałem przypadki, ale zakazałem nowych rejestracji tymi samymi literami, ale różnymi przypadkami, co jest sprzeczne z całą wrażliwością na sprawę, nie? –

+0

To jest dokładnie to, co sugeruję. – wefwfwefwe

+0

Jestem świadomy, że ten wątek jest trochę stary, ale miałem pomysł, który może trochę pomóc. Zawsze można przechowywać zarówno zapisany rekord, jak i zapis z małymi literami. Użyj rekordu o małych literach do sprawdzania i zachowanego rekordu dla wiadomości e-mail. – diggersworld

0

Tak, to jest problem. Właśnie zrobiłem mały test na Linuksie (działa exim) i tylko skrzynka pocztowa z prawidłową kopertą dotarła do skrzynki pocztowej ...

Myślę, że większość komercyjnych dostawców poczty normalizuje wszystkie adresy e-mail, ale generalnie trzeba użyć właściwego przypadku !

0

This link mówi, że "prawie żadna usługa e-mail lub usługodawca internetowy nie wymusza na adresach e-mail adresów".

+4

Tłumaczenie: Niektóre usługi e-mailowe/ISP wymuszają rozróżnianie adresów e-mail. – Bill

+0

Inne tłumaczenie: nie ma znaczenia, z wyjątkiem tego, kiedy to robi. – RedFilter

0

Nie znam żadnej implementacji, która wyróżnia adresy e-mail o tych samych literach, ale w różnych przypadkach.

Nigdy nie słyszałem, aby wiadomość nie była poprawnie przesyłana tylko dlatego, że przypadki były błędne.

13

Według RFC 2821:

Miejscowy-część skrzynki pocztowej należy traktować jako wielkość liter. Dlatego implementacje SMTP MUSZĄ zachować ostrożność, aby zachować przypadek lokalnych części skrzynki pocztowej. W domenach skrzynek pocztowych nie jest rozróżniana wielkość liter. W szczególności, dla niektórych hostów użytkownik "smith" różni się od użytkownika "Smith". Wykorzystywanie wrażliwości skrzynek na lokalne części jest jednak problematyczne i jest odradzane.

Podczas gdy adresy e-mail można traktować z uwzględnieniem wielkości liter, nie należy tego robić.

+0

Czytałem ten akapit (powiązany z tym w moim pytaniu), ale czy jest to tak czy nie? Jak to ma zastosowanie w rzeczywistych systemach? –

+1

To tak, dla większości wartości "bezpiecznych". Prawdopodobnie nie spotkasz się z problemem, a jeśli to zrobisz, obejście (przy użyciu innego adresu) jest łatwiejsze niż problemy z doświadczeniem użytkownika, które spowodujesz, wymuszając skrzynkę. –

0

Jeśli używasz go jako logowania do systemu, nie ma potrzeby. Zwykle (gdy mówimy o loginach), admin i Admin to jedna i ta sama osoba ... tak samo jest z JohnDoe i johndoe ... również liczba osób, które używają dostawców poczty elektronicznej, które pozwalają na rozróżnianie wielkości liter, jest droga, o wiele za niska.

5

IMHO przechowuje i wyświetla adres w taki sam sposób, w jaki użytkownik go wprowadził, nie tylko dlatego, że zapytanie ofertowe mówi, że musisz szanować sprawę, ale ponieważ jeśli użytkownik ma preferencje, powinieneś uszanować tę preferencję. Jest to adres e-mail. Nie jestem fanem systemów formatujących dane osobowe, które im dostarczam.Na przykład, zaskoczyłbyś się, jak wiele systemów INSIST nazywa mnie "Tj" - co jest oczywiste - raczej niż "T.J." (+1 do SO za poprawne wykonanie).

Jeśli John Smith zarejestruje się jako "[email protected]", to właśnie tak John Smith chce zobaczyć jego adres e-mail (jeśli ma jakieś preferencje). Prawdopodobnie nie pozwoliłbym, aby ktoś inny zarejestrował się przy użyciu adresu e-mail "[email protected]", ponieważ szanse na to są takie same, jak w przypadku adresu innego konta, ale nie chciałbym tłumaczyć, że użytkownik podał swój adres lub inne szczegóły. Co najwyżej mogę ich o to zapytać, jeśli dadzą mi CAŁĄ PACZKĘ, pytając, czy nie woleliby czegoś bardziej ... delikatnego.

12

Nie wyrzucaj danych. Zapisz adres e-mail lub nazwę użytkownika dokładnie tak, jak je otrzymałeś, z wyjątkiem przycinania obu końców ciągów.

Podczas wysyłania wiadomości e-mail użyj obudowy dostarczonej przez użytkownika. Tylko dlatego, że rozróżnianie wielkości liter jest rzadkie, nie ma powodu, aby tego nie obsługiwać - w przeciwnym razie użytkownik nie otrzyma poczty, a może nawet nie będzie mógł się zarejestrować.

Podczas uwierzytelniania użytkownika, można ewentualnie zrobić porównanie na małe litery (lub dużych liter) strun, tak, że sprawa jest pomijane.

Tak więc, zachowując dane wejściowe użytkownika, które zostały nagle nadane sobie opcje: czy rozróżniać małe i wielkie litery podczas sprawdzania autentyczności oraz czy używać adresów e-mail rozróżniających duże i małe litery podczas wysyłania poczty. Nawet jeśli nie zdecydujesz się na skorzystanie z nich teraz, celem przechowywania danych jest umożliwienie Tobie (lub innemu programistce) dokonania tych wyborów w przyszłości.

Powiązane problemy