Lập trình xung quanh địa chỉ email nhạy cảm


8

Giống như nhiều trang web, chúng tôi sử dụng địa chỉ email làm định danh người dùng để đăng nhập.

RFC 5321 [ # 2.3.11 ] nói rằng các phần cục bộ của địa chỉ email:

PHẢI được giải thích và chỉ định ngữ nghĩa bởi máy chủ được chỉ định trong phần tên miền của địa chỉ

Điều này có nghĩa là các ứng dụng xử lý địa chỉ email không thể đoán thứ hai, ví dụ, cách mà Gmail sẽ bỏ qua các dấu chấm khi xác định tên người dùng . Điều đó cũng có nghĩa là các ứng dụng phải coi địa chỉ email là các phần cục bộ như phân biệt chữ hoa chữ thường, vì đó là cách phần được chỉ định .

Tuy nhiên, người dùng thật ngu ngốc và trong một trường hợp gần đây, một người dùng đã đăng ký địa chỉ email viết hoa (và đã nhận và nhấp vào email xác minh thành công) thấy rằng họ không thể đăng nhập vì hiện tại họ đang sử dụng định dạng email viết thường Địa chỉ.

Tôi chưa bao giờ bắt gặp một máy chủ email thực thi phân biệt chữ hoa chữ thường trên hộp thư đến của nó. Tôi không nghi ngờ rằng một số tồn tại ở đâu đó, nhưng tôi đang đặt câu hỏi liệu không có lợi ích lớn hơn trong việc giảm độ nhạy trường hợp cho tên người dùng email của chúng tôi hơn là có vấn đề trong việc giữ nó.

Tôi sẽ không đi xa đến mức mô phỏng xử lý dấu chấm của GMail, hoặc bất kỳ loại địa chỉ cộng nào , bởi vì những thứ đó dường như không phổ biến hoặc được giả định tự động như phân biệt chữ hoa chữ thường. Tuy nhiên, tôi biết đó không phải là một kịch bản đen trắng nên tôi quan tâm nếu có ai biết địa chỉ email phân biệt chữ hoa chữ thường như thế nào.


5
Hai câu trả lời đã từ cùng một RFC. Lần tới, hãy chắc chắn rằng bạn đã đọc toàn bộ :)
yannis

Có hai câu trả lời cho câu hỏi này. Đừng sử dụng địa chỉ email làm tên người dùng. Sử dụng cùng một thao tác chuỗi trên cả đầu vào của người dùng và giá trị được lưu trữ trong cơ sở dữ liệu, nếu chúng không khớp tại thời điểm đó, thì chúng không bằng nhau.
Ramhound

Yahoo đã từng có trường hợp tên người dùng nhạy cảm trong những ngày thực sự, thực sự cũ. Giống như giữa những năm 90. Làm game hack yahoo rất nhiều niềm vui. . .
Wyatt Barnett

Tại sao không thực thi tính không nhạy cảm của trường hợp đối với số nhận dạng người dùng của bạn bằng cách chuyển đổi chúng thành trường hợp nội bộ tiêu chuẩn trong khi đăng nhập? Cơ sở dữ liệu của bạn vẫn có thể lưu trữ địa chỉ e-mail phân biệt chữ hoa chữ thường khi bạn cần gửi e-mail cho người dùng (để khôi phục mật khẩu, v.v.). Dường như cực kỳ khó có khả năng bạn sẽ có được hai người dùng khác nhau có địa chỉ e-mail chỉ khác nhau tùy theo trường hợp của phần địa phương của họ.
Đánh dấu gian hàng

@YannisRizos Tôi đã đọc nó, nhưng NÊN luôn bị RFC đánh cắp trong RFC. Việc các máy chủ NÊN làm điều gì đó có nghĩa là họ có thể không và tôi chỉ muốn trấn an rằng, trên thực tế, NÊN được áp dụng rộng rãi hơn một chút so với định nghĩa của nó.
Gareth

Câu trả lời:


17

http://tools.ietf.org/html/rfc5321#page-42 (nhấn mạnh thêm):

Mặc dù định nghĩa trên cho Phần cục bộ tương đối dễ cho phép, để có khả năng tương tác tối đa, một máy chủ dự kiến ​​sẽ nhận thư NÊN tránh xác định hộp thư trong đó Phần cục bộ yêu cầu (hoặc sử dụng) dạng Chuỗi trích dẫn hoặc trong trường hợp Phần cục bộ là trường hợp -sự nhạy cảm.

Các rfc không khuyến khích trường hợp nhạy cảm. Ngoài ra, cá nhân tôi chưa bao giờ thấy một máy chủ lưu trữ với các bộ phận địa phương nhạy cảm.

Địa chỉ email không phân biệt chữ hoa chữ thường là một tiêu chuẩn không chính thức.

Do đó, tôi nghĩ rằng bạn đã đúng khi nói rằng có lợi ích lớn hơn trong việc giảm độ nhạy trường hợp cho tên người dùng email của bạn hơn là có vấn đề trong việc giữ nó.


5

Đoạn 2.4. Nguyên tắc cú pháp chung và Mô hình giao dịch của các tiểu bang RFC 5321 (nhấn mạnh của tôi):

Do đó, việc triển khai SMTP PHẢI cẩn thận để bảo vệ trường hợp hộp thư cục bộ. Đặc biệt, đối với một số máy chủ, người dùng "smith" khác với người dùng "Smith". Tuy nhiên, việc khai thác độ nhạy trường hợp của các bộ phận cục bộ hộp thư cản trở khả năng tương tác và không được khuyến khích. Các miền hộp thư tuân theo các quy tắc DNS thông thường và do đó không phân biệt chữ hoa chữ thường.

AFAIK tất cả các máy chủ thư phổ biến tránh các email phân biệt chữ hoa chữ thường và bạn cũng nên như vậy. Tôi đã không sử dụng một dịch vụ giả định trường hợp nhạy cảm cho email và tôi ghét phải ngạc nhiên.


4

Những gì bạn nên làm là sử dụng địa chỉ email như được cung cấp để gửi email và chuyển đổi nó thành một thứ ít bị lỗi hơn khi sử dụng nó làm định danh tài khoản hoặc ít nhất là sử dụng nó làm dự phòng khi bạn không tìm thấy kết quả khớp chính xác.

Đây sẽ là một sự tương tự rất thô với những gì thuật toán Soundex làm cho các từ hoặc tên bằng tiếng Anh bằng cách loại bỏ những thứ tạo ra sự mơ hồ. Ví dụ: bạn có thể chuyển đổi toàn bộ địa chỉ thành chữ thường và xóa các phần tử con và ký hiệu không chữ và số khỏi phần cục bộ (ví dụ: Lance.Boyle+sometag@Example.comsẽ chuyển xuống lanceboyle@example.com). Áp dụng cùng một chuyển đổi cho bất kỳ địa chỉ nào được sử dụng trong quá trình đăng nhập sẽ giúp bạn có nhiều kết quả phù hợp hơn và người dùng không phải là người khôn ngoan hơn vì bất kỳ việc sử dụng địa chỉ nào khác sẽ là phiên bản được cung cấp.

Từ một quan điểm kỹ thuật, điều này làm cho thông tin đăng nhập của bạn nhẹ dễ dàng hơn để brute force. Nếu đó là một mối quan tâm, bạn luôn có thể yêu cầu một kết quả khớp chính xác để đăng nhập và cung cấp tùy chọn "quên đăng nhập hoặc mật khẩu của tôi" có thể chấp nhận được khi tra cứu tài khoản vì bất kỳ email nào bạn gửi sẽ đến địa chỉ "đúng".

Nếu một địa chỉ như địa chỉ ở trên thực hiện mọi cách thông qua đăng ký và xác minh, tôi không nghĩ rằng việc từ chối những người khác chuyển đổi theo cách tương tự như trùng lặp là không hợp lý. Tôi muốn thừa nhận rằng bất kỳ trang web đó chuyển nhượng địa chỉ địa phương thích Lance.Boyle, LanceBoyle, lance.boylelanceboylevà xử lý chúng như khác nhau có thể là nguồn gốc của các loại rắc rối.


Tôi không chắc chắn tôi sẽ đi xa đến mức để xóa dấu chấm - Tôi nghĩ rằng tôi sẽ không nhạy cảm khi kiểm tra thông tin đăng nhập - nhưng về cơ bản đây cũng là điều tôi sẽ đề xuất.
Murph

1
Tôi chắc chắn sẽ không tước chấm. Googling tìm thấy những người được đặt tên, ví dụ "Robert Oot" và "Richard Oot", họ cũng có thể có địa chỉ email như "r.oot@somedomain.com". Loại bỏ các dấu chấm ra khỏi đó và bạn cũng có thể có một cuộc xung đột. :-)
Carson63000

Xung đột cụ thể đó không có khả năng vì siêu người dùng có thể không đăng ký tài khoản trên các trang web, nhưng bạn có một điểm. Một khả năng sẽ là chỉ tước các chấm từ các miền mà nó không quan trọng và có thể là nguồn gốc của rất nhiều người dùng, như thế gmail.com.
Blrfl
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.