2009-04-16 54 views
17

我打算为我正在构建的Web应用程序添加openid支持。我似乎无法找到有效的openid的最大长度,所以我可以将其存储在我的数据库中。我已经看到了一些模糊的255,但我宁愿确定。openID的最大长度

除了是它使用的OpenID作为用户名(建议)有用吗?

回答

7

一个OpenID是一个URI,所以你通过URI的最大长度的限制。据我所知没有限制,但一些浏览器(如Internet Explorer)有限制。

延伸阅读:

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

+0

谢谢,这很有用。 – Ruggs 2009-04-16 03:39:23

+1

您的链接指出OpenId 2.0中标识符Uri的最大长度当前未指定。 URL的最大长度也是未指定的,但不同的浏览器有不同的限制。 Internet Explorer目前有最短的限制,2083个字符。 http://support.microsoft.com/kb/208427 – dthrasher 2009-12-23 15:14:51

3

我不会直接使用的OpenID作为用户名。只要看看雅虎提供给用户的OpenID网址,他们都是不可理解的。允许用户选择他们自己的用户名,理想情况下允许多个OpenID URL与一个用户帐户相关联(如Stack Overflow)。

+0

我会将openid存储在与用户数据库不同的表中,因此它将支持多个openid。 – Ruggs 2009-04-16 03:37:53

1

该规范2.0版本中没有官方长度。

您可以哈希提供到一些独特的(MD5,或其它一些重复的哈希值)的URL,并将其存储在您的数据库为更短的字符串。

至于使用它作为一个用户名,一个大的URL是不漂亮。您可以从响应提取用户名(SO得到了我直接从我的OpenID用户名)

+0

我从来没有想过将它存储为散列。这就说得通了。 – Ruggs 2009-04-16 03:40:11

+0

真是个坏主意。 MD5和SHA-1已被破坏,所以我可以像任何人希望通过设计一个声称具有相同价值的索赔ID一样入侵您的RP。你可以通过独特地腌制每一个散列来缓解这种情况,但目前只是存储整个事情。 – 2009-04-17 03:02:52

+0

那么你如何从提供者发送md5/sha-1哈希? OpenID响应必须来自可信任的提供商,才能首先生效。 – Ruggs 2009-04-17 05:59:25

1

你不应该接受任何的OpenID URL比255更长虽然它是可能的,许多可以用这个作为攻击向量拉关闭SQL注入等功能。查看OWASP AntiSAMY API作为附加保护。

15

根据OpenId 1.1的规范,Identifier Url的最大限制是255个字节。请参阅OpenId 1.1 Appendix D: Limits。身份提供者和return_to Url可能最多为2047个最大字节。

请注意,关于限制的这一部分已从OpenId 2.0规范中删除。所以目前还不清楚现在的最大长度。