2009-04-16 31 views
17

Estoy planeando agregar compatibilidad openid para una aplicación web que estoy construyendo. Parece que no puedo encontrar la longitud máxima de un openid válido, así que puedo almacenarlo en mi base de datos. He visto algunas referencias vagas a 255 pero prefiero estar seguro.Longitud máxima de un openID

Además, ¿es útil usar el código abierto como nombre de usuario (recomendaciones)?

Respuesta

7

un OpenID es un URI, por lo que está limitado por la longitud máxima de un URI. Hasta donde sé, no hay límite, pero algunos navegadores (como Internet Explorer) tienen un límite.

Más información:

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

+0

Gracias fue útil. – Ruggs

+1

Su enlace indica que la longitud máxima de un identificador Uri en OpenId 2.0 actualmente no está especificada. La longitud máxima de una URL tampoco está especificada, pero los diferentes navegadores tienen límites diferentes. Internet Explorer actualmente tiene el límite más corto, 2083 caracteres. http://support.microsoft.com/kb/208427 – dthrasher

3

yo no usaría el OpenID directamente como el nombre de usuario. Solo eche un vistazo a las URL de OpenID que Yahoo proporciona a los usuarios, son incomprensibles. Permita a los usuarios elegir su propio nombre de usuario, e idealmente permita que varias URL OpenID se asocien con una cuenta de usuario (como Stack Overflow).

+0

Voy a almacenar el openid en una tabla separada de la base de datos del usuario, por lo que admitirá varios openids. – Ruggs

1

No hay una longitud oficial en la versión 2.0 de la especificación.

Puede copiar la URL proporcionada en algo único (md5, o algún otro hash repetible) y almacenar eso en su base de datos como una cadena mucho más corta.

En cuanto a usarlo como nombre de usuario, una url grande no es bonita. Puede extraer un nombre de usuario de las respuestas (SO obtuvo mi nombre de usuario directamente de mi OpenID)

+0

Nunca pensé en almacenarlo como un hash. Eso tiene sentido. – Ruggs

+0

REALMENTE mala idea. MD5 y SHA-1 se han roto, por lo que podría hackear su RP como cualquier persona que desee con solo idear un identificador reclamado que tenga el mismo valor. Podrías mitigar esto soldando de forma única cada hachís, pero en gran medida es solo almacenar todo. –

+0

Entonces, ¿cómo enviaría el hash md5/sha-1 del proveedor? Las respuestas de OpenID deben provenir del proveedor de confianza para ser válidas en primer lugar. – Ruggs

1

No debe aceptar ninguna URL OpenID que sea más larga que 255. Si bien es posible, muchos pueden usar esto como un vector de ataque para extraer cosas como inyección de SQL. Eche un vistazo a las API de OWASP AntiSAMY como una protección adicional.

15

De acuerdo con la especificación para OpenId 1.1, el límite máximo para Identifier Urls es de 255 bytes. Ver OpenId 1.1 Appendix D: Limits. El proveedor de identidad y return_to URL pueden tener un máximo de 2047 bytes máximos.

Tenga en cuenta que esta sección de límites se eliminó de la especificación OpenId 2.0. Por lo tanto, no está claro cuál es la longitud máxima ahora.