2009-04-16 14 views
17

ビルド中のWebアプリケーションにopenidサポートを追加する予定です。私は有効なopenidの最大長を見つけることができないので、データベースに格納することができます。私は255へのあいまいな参照を見てきましたが、私はむしろ確信しています。openIDの最大長

さらに、openidをユーザー名(推奨事項)として使用すると便利ですか?

答えて

7

OpenIDはURIであるため、URIの最大長で制限されます。私の知る限り、制限はありませんが、一部のブラウザ(Internet Explorerなど)には制限があります。

深い読み:私は、ユーザー名として直接のOpenIDを使用していないだろう

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

+0

ありがとうございました。 – Ruggs

+1

あなたのリンクは、OpenId 2.0の識別子Uriの最大長が現在指定されていないことを示します。 URLの最大長も指定されていませんが、ブラウザによって異なる制限があります。 Internet Explorerの現在の制限は、2083文字です。 http://support.microsoft.com/kb/208427 – dthrasher

3

。 Yahooがユーザーに提供するOpenIDのURLを見てみると分かりません。ユーザーが自分のユーザー名を選択できるようにし、理想的にはStack Overflowのように複数のOpenID URLを1つのユーザーアカウントに関連付けることができます。

+0

openidを複数のopenidをサポートするように、ユーザーデータベースとは別のテーブルに格納します。 – Ruggs

1

仕様のバージョン2.0に正式な長さはありません。

提供されたURLを一意のもの(md5などの繰り返し可能なハッシュ)にハッシュして、それをはるかに短い文字列としてDBに格納できます。

ユーザー名として使用すると、大きなURLがきれいではありません。応答からユーザー名を抽出できます(私のユーザー名は自分のOpenIDから直接取得しました)

+0

私はそれをハッシュとして保存することは考えていませんでした。それは理にかなっている。 – Ruggs

+0

本当に悪い考えです。 MD5とSHA-1は壊れていますので、同じ値にハッシュされている主張されたidを考案してみたいと思っている人は誰でもRPにハックすることができます。あなたはそれぞれのハッシュを一意にソルトすることでこれを緩和することができますが、全体を保存するのはそれほど難しくありません。 –

+0

それでは、プロバイダからmd5/sha-1ハッシュをどのように送信しますか? OpenIDレスポンスは、最初は有効な信頼できるプロバイダから来ている必要があります。 – Ruggs

1

255より長いOpenID URLを受け入れるべきではありません。多くの場合、これを攻撃ベクトルとして使用してSQLインジェクションのようなものをオフにします。追加の保護としてOWASP AntiSAMY APIを見てください。

15

OpenId 1.1の仕様によると、識別子Urlの最大制限は255バイトです。 OpenId 1.1 Appendix D: Limitsを参照してください。アイデンティティプロバイダとreturn_to Urlsは最大2047バイトまでです。

この制限に関するセクションは、OpenId 2.0仕様から削除されています。だから最大の長さは今何か不明です。