私のウェブサイトで電子メール認証を行いたいです。
電子メールアドレスを確認するためのリンクを含む電子メールをユーザーに送信する予定です。確認リンクには、次のもので作成されたキーを含める予定です。
str(uuid.uuid4())
確認リンクはしばらくすると期限切れになります。
私の質問:
それは良いアプローチですか?安全、信頼できる?uuid.uuid4() が一意であることを確認する必要がありますか? uuid.uuid4() 値は URL の一部として安全ですか?
私のウェブサイトで電子メール認証を行いたいです。
電子メールアドレスを確認するためのリンクを含む電子メールをユーザーに送信する予定です。確認リンクには、次のもので作成されたキーを含める予定です。
str(uuid.uuid4())
確認リンクはしばらくすると期限切れになります。
私の質問:
それは良いアプローチですか?安全、信頼できる?uuid.uuid4() が一意であることを確認する必要がありますか? uuid.uuid4() 値は URL の一部として安全ですか?
それは良いアプローチですか?安全、信頼できる?uuid.uuid4() が一意であることを確認する必要がありますか? uuid.uuid4() 値は URL の一部として安全ですか?
はい、これで電子メールの確認には十分です。
Georg Schöllyによると、
uuid4() が生成する ... ランダムな UUID。衝突の可能性は本当に、本当に、本当に小さいです。小さいので気にしなくていいです。問題は、乱数ジェネレーターが悪いと衝突が発生しやすくなることです。
次にボブ・アマンを引用した人、
率直に言って、悪意のあるアクターのいない単一のアプリケーション空間では、バージョン 4 の UUID でも、1 秒間にかなりの数の UUID を生成しているとしても、衝突が発生するずっと前に地球上のすべての生命が絶滅します。
したがって、これは電子メール検証にとって安全で信頼できると言えます。また、UUID4 が一意であることを確認する必要はありません (ただし、生成時に確認する必要はありません)。また、UUID が 16 進数でエンコードされている限り (正規の形式)、URL の一部であっても安全です。