Могу ли я безопасно обращаться с адресами электронной почты строчными буквами? - PullRequest
12 голосов
/ 01 октября 2009

Теоретически электронные письма чувствительны к регистру . Но, используя электронную почту для входа в систему, я хочу, чтобы все они были в нижнем регистре (то есть john@smith.com и John@smith.com не могут быть разными пользователями).

Может ли это быть проблемой для некоторых пользователей, которые используют регистр в своем адресе электронной почты? Кто-нибудь использует это там?

Редактировать: поскольку существует много ответов "сохранить регистр при сохранении, игнорировать при входе в систему": эта система сломалась бы, если бы у меня действительно было два разных пользователя: Джон @ Смит и Джон @ Смит, не так ли?

Пример: Джон @ Смит и Джон @ Смит имеют пароль 123. Как узнать, какой из них только что аутентифицирован?

Ответы [ 8 ]

13 голосов
/ 01 октября 2009

Согласно RFC 2821 :

Локальная часть почтового ящика ДОЛЖНА рассматриваться с учетом регистра. Поэтому реализации SMTP ДОЛЖНЫ позаботиться о том, чтобы сохранить случай локальных частей почтового ящика. Домены почтовых ящиков не чувствительны к регистру. В частности, для некоторых хостов пользователь «Смит» отличается от пользователя «Смит». Однако использование чувствительности к регистру локальных частей почтового ящика затрудняет взаимодействие и не поощряется.

Итак, хотя вы можете относиться к адресам электронной почты с учетом регистра, вы не можете этого делать.

12 голосов
/ 01 октября 2009

Не выбрасывайте данные. Сохраняйте адрес электронной почты или имя пользователя в точности так, как вы их получили, за исключением обрезания обоих концов строки.

При отправке электронной почты используйте чехол, предоставленный пользователем. Тот факт, что чувствительность к регистру редка, не является основанием для того, чтобы ее не обрабатывать, иначе пользователь не получает почту и даже не может зарегистрироваться.

При аутентификации пользователя вы можете при желании выполнить сравнение строк в нижнем и верхнем регистре, чтобы регистр не учитывался.

Таким образом, сохраняя введенные пользователем данные, вы неожиданно предоставили себе варианты: выполнять ли при проверке подлинности сравнение с учетом регистра, и использовать ли адреса электронной почты с учетом регистра при отправке почты. Даже если вы не решите воспользоваться ими сейчас, цель сохранения данных - позволить вам (или другому разработчику) сделать этот выбор в будущем.

6 голосов
/ 01 октября 2009

Некоторые системы чувствительны к регистру.

Я бы посоветовал сохранить его, но проигнорировал файловые системы Windows.

т.е. помните, что Джон подписался на John@smith.com, но позвольте ему войти в систему как JOHN@smith.com, john@smith.com или JohN@smith.com.

Это вряд ли вызовет конфликты, и если у кого-либо есть чувствительное к регистру электронное письмо, я уверен, что они будут знать об этом.

5 голосов
/ 01 октября 2009

ИМХО сохраняйте и отображайте адрес так, как его ввел пользователь, не только потому, что в RFP говорится, что вы должны соблюдать регистр, но и потому, что если у пользователя есть предпочтение, вы должны уважать его. Это их адрес электронной почты. Я не фанат систем переформатирования личных данных, которые я им предоставляю. Например, вы будете удивлены тем, сколько систем INSIST называют меня «Tj» - что явно неправильно - вместо «T.J.» (+1 к SO, чтобы понять это правильно).

Так что, если Джон Смит подписывается как "John.Smith@example.com", то именно так Джон Смит хочет видеть свой адрес электронной почты (если у него есть предпочтения). Я, вероятно, не позволил бы кому-то другому зарегистрироваться с адресом электронной почты "john.smith@example.com", потому что вероятность того, что он совпадает с адресом другой учетной записи, невелика, но я бы не стал портить форматирование пользователем своего адреса или другое подробности. Самое большее, я мог бы попросить их, если бы они давали мне много криков ВСЕХ КОПИЙ, спрашивая, не предпочтут ли они что-нибудь более ... нежное.

0 голосов
/ 01 октября 2009

Если вы используете его как системный логин, нет необходимости. Обычно (когда речь идет о входах в систему), admin и Admin - это одно и то же лицо ... как и JohnDoe и johndoe ... также число людей, которые используют провайдеров электронной почты, которые учитывают регистр, слишком мало.

0 голосов
/ 01 октября 2009

Я не знаю ни одной реализации, которая бы отличала адреса электронной почты, имеющие одинаковые буквы, но в другом случае.

Я никогда не слышал о том, что сообщение не было передано правильно только потому, что случаи были неправильными.

0 голосов
/ 01 октября 2009

Эта ссылка говорит о том, что "вряд ли какая-либо служба электронной почты или Интернет-провайдер применяет адреса электронной почты с учетом регистра".

0 голосов
/ 01 октября 2009

Да, это проблема. Я только что провел небольшой тест на Linux (работает exim), и только почта с правильным регистром достигла почтового ящика ...

Я думаю, что большинство коммерческих почтовых провайдеров нормализуют все адреса электронной почты, но в целом вы должны использовать правильный регистр!

...