2009-04-16 15 views
17

Sto pianificando di aggiungere supporto openid per un'applicazione Web che sto costruendo. Non riesco a trovare la lunghezza massima di un openid valido, quindi posso memorizzarlo nel mio database. Ho visto alcuni riferimenti vaghi a 255 ma preferirei essere sicuro.Lunghezza massima di un ID aperto

Inoltre è utile utilizzare l'openid come nome utente (consigli)?

risposta

7

un OpenID è un URI, quindi è limitato dalla lunghezza massima di un URI. Per quanto ne so non c'è limite, ma alcuni browser (come Internet Explorer) hanno un limite.

Ulteriori approfondimenti:

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

+0

Grazie è stato utile. – Ruggs

+1

Il tuo link indica che la lunghezza massima di un Uri dell'identificatore in OpenId 2.0 non è attualmente specificata. Anche la lunghezza massima di un URL non è specificata, ma i diversi browser hanno limiti diversi. Internet Explorer ha attualmente il limite più breve, 2083 caratteri. http://support.microsoft.com/kb/208427 – dthrasher

3

non vorrei usare l'OpenID direttamente come il nome utente. Basta dare un'occhiata agli URL OpenID che Yahoo fornisce agli utenti, sono incomprensibili. Consentire agli utenti di scegliere il proprio nome utente e idealmente consentire l'associazione di più URL OpenID con un account utente (ad esempio, Stack Overflow).

+0

Conserverò l'openid in una tabella separata dal database utente in modo che supporti più openID. – Ruggs

1

Non esiste una lunghezza ufficiale nella versione 2.0 della specifica.

È possibile inserire l'URL fornito in qualcosa di unico (md5 o un altro hash ripetibile) e archiviarlo nel DB come una stringa molto più breve.

Per quanto riguarda l'utilizzo come nome utente, un grande URL non è bello. È possibile estrarre un nome utente dalle risposte (SO ottenuto il mio nome utente direttamente dal mio OpenID)

+0

Non ho mai pensato di memorizzarlo come un hash. Ciò ha senso. – Ruggs

+0

Davvero cattiva idea. MD5 e SHA-1 sono stati interrotti, quindi ho potuto hackerare nel tuo RP come chiunque volessi solo costruendo un ID sostenuto che ha hashed allo stesso valore. Puoi mitigare ciò salando in modo univoco ogni hash, ma è di gran lunga più semplice archiviare tutto. –

+0

Quindi, come si invia l'hash md5/sha-1 dal provider? Le risposte OpenID devono provenire dal fornitore di fiducia per essere valide in primo luogo. – Ruggs

1

Non si deve accettare alcun URL OpenID che sia più lungo di 255. Mentre è possibile, molti possono usare questo come vettore di attacco per tirare cose come SQL Injection. Dai un'occhiata alle API OWASP AntiSAMY come protezione aggiuntiva.

15

In base alle specifiche per OpenId 1.1, il limite massimo per gli URL di identificazione è 255 byte. Vedi OpenId 1.1 Appendix D: Limits. Identity Provider e return_to Urls possono avere un massimo di 2047 byte massimi.

Si noti che questa sezione sui limiti è stata rimossa dalle specifiche OpenId 2.0. Quindi non è chiaro quale sia la lunghezza massima ora.