我计划为我正在构建的 Web 应用程序添加 openid 支持。我似乎找不到有效 openid 的最大长度,因此我可以将其存储在我的数据库中。我看到一些对 255 的模糊引用,但我宁愿确定。
另外使用 openid 作为用户名有用吗(推荐)?
根据 OpenId 1.1 的规范,标识符 Urls 的最大限制为 255 个字节。请参阅OpenId 1.1 附录 D:限制。Identity Provider 和 return_to Urls 最多可达 2047 个字节。
请注意,有关限制的这一部分已从 OpenId 2.0 规范中删除。所以现在还不清楚最大长度是多少。
OpenID 是一个 URI,因此您受限于 URI 的最大长度。据我所知,没有限制,但某些浏览器(例如 Internet Explorer)有限制。
进一步阅读:
我不会直接使用 OpenID 作为用户名。看看 Yahoo 提供给用户的 OpenID URL,它们是难以理解的。允许用户选择他们自己的用户名,并且理想情况下允许多个 OpenID URL 与一个用户帐户相关联(就像 Stack Overflow 一样)。
规范的 2.0 版中没有官方长度。
您可以将提供的 URL 散列为唯一的内容(md5 或其他一些可重复的散列),并将其作为更短的字符串存储在您的数据库中。
至于使用它作为用户名,一个大的网址并不漂亮。您可以从响应中提取用户名(所以直接从我的 OpenID 获得我的用户名)
您不应接受任何长度超过 255 的 OpenID URL。尽管有可能,但许多人可以将其用作攻击媒介来实施 SQL 注入等攻击。看看 OWASP AntiSAMY API 作为额外的保护。