2009-04-16 5 views
17

Tôi đang lập kế hoạch thêm hỗ trợ openid cho một ứng dụng web mà tôi đang xây dựng. Tôi không thể tìm thấy chiều dài tối đa của một openid hợp lệ để tôi có thể lưu trữ nó trong cơ sở dữ liệu của mình. Tôi đã nhìn thấy một số tài liệu tham khảo mơ hồ đến 255 nhưng tôi muốn chắc chắn hơn.Độ dài tối đa của một openID

Ngoài ra, việc sử dụng openid làm tên người dùng (đề xuất) có hữu ích không?

Trả lời

7

OpenID là URI, do đó bạn bị giới hạn bởi độ dài tối đa của URI. Theo như tôi biết không có giới hạn, nhưng một số trình duyệt (như Internet Explorer) có một giới hạn.

Tiếp tục đọc:

http://openid.net/pipermail/general/2008-August/005305.html

+0

Cảm ơn điều đó rất hữu ích. – Ruggs

+1

Liên kết của bạn cho biết rằng độ dài tối đa của Mã định danh Uri trong OpenId 2.0 hiện không được chỉ định. Độ dài tối đa của một URL cũng không được chỉ định, nhưng các trình duyệt khác nhau có các giới hạn khác nhau. Internet Explorer hiện có giới hạn ngắn nhất, 2083 ký tự. http://support.microsoft.com/kb/208427 – dthrasher

3

tôi sẽ không sử dụng OpenID trực tiếp như tên người dùng. Chỉ cần có một cái nhìn tại URL OpenID mà Yahoo cung cấp cho người dùng, họ không thể hiểu được. Cho phép người dùng chọn tên người dùng của họ và lý tưởng cho phép nhiều URL OpenID được liên kết với một tài khoản người dùng (như Stack Overflow).

+0

Tôi sẽ lưu trữ openid trong một bảng riêng biệt từ cơ sở dữ liệu người dùng để nó sẽ hỗ trợ nhiều lần mở. – Ruggs

1

Không có độ dài chính thức trong phiên bản 2.0 của thông số kỹ thuật.

Bạn có thể băm URL được cung cấp vào thứ gì đó duy nhất (md5 hoặc một số băm lặp lại khác) và lưu trữ trong DB của bạn dưới dạng chuỗi ngắn hơn nhiều.

Để sử dụng làm tên người dùng, url lớn không đẹp. Bạn có thể trích xuất tên người dùng từ các phản hồi (SO nhận tên người dùng của tôi trực tiếp từ OpenID của tôi)

+0

Tôi chưa bao giờ nghĩ đến việc lưu trữ nó dưới dạng băm. Điều đó có ý nghĩa. – Ruggs

+0

THỰC SỰ Ý tưởng tồi. MD5 và SHA-1 đã bị hỏng, vì vậy tôi có thể xâm nhập vào RP của bạn như bất kỳ ai tôi muốn chỉ bằng cách giả mạo id được xác nhận quyền sở hữu được băm cùng một giá trị. Bạn _could_ giảm thiểu điều này bằng cách duy nhất salting mỗi băm, nhưng nó bằng cách xa bes để chỉ lưu trữ toàn bộ điều. –

+0

Vậy làm cách nào bạn gửi mã băm md5/sha-1 từ nhà cung cấp? Câu trả lời OpenID phải đến từ nhà cung cấp đáng tin cậy để có hiệu lực ngay từ đầu. – Ruggs

1

Bạn không nên chấp nhận bất kỳ URL OpenID nào dài hơn 255. Trong khi có thể, nhiều người có thể sử dụng nó làm vector tấn công để kéo tắt những thứ như SQL Injection. Hãy xem API OWASP AntiSAMY như một sự bảo vệ bổ sung.

15

Theo đặc điểm kỹ thuật cho OpenId 1.1, giới hạn tối đa cho Url số nhận dạng là 255 byte. Xem OpenId 1.1 Appendix D: Limits. Nhà cung cấp danh tính và return_to Url có thể có tối đa 2047 byte tối đa.

Lưu ý rằng phần này về giới hạn đã bị xóa khỏi đặc tả OpenId 2.0. Vì vậy, nó không rõ ràng những gì chiều dài tối đa là bây giờ.