0

アカウントを作成しようとしている人に送信されるこのアカウント作成メールがあります。これは、彼らが本人であることを認証する必要があるためです。

ただし、ここでの私の問題は、メールを受信したときにクリックする必要のあるURLが長すぎることと、一部のメールクライアントがそれをうまく処理できず、URLを切り捨てて、クリックするとURLが無効になることです。

URLにはドメイン名、ハッシュ化された電子メール、および長いアクティベーションコードが含まれているためです。こんな感じです。

http://domain.com/activation?email=75a5867d3df134bededbaf24ff17624d&key=8fecb20817b3847419bb3de39a609afe

一部の電子メールクライアントはこれで問題ありませんが、一部はそうではありません...そして私はHTML電子メールを使用せず、プレーン/テキスト電子メールに固執したいと思います。また、URL短縮サービスを使った恐ろしい話を聞いたので、使うべきかどうかわかりません...

この分野での洞察は大歓迎です!

4

1 に答える 1

0

私は間違いなくジェイソンに同意します:あなたのURLを短くしてください。

本当に必要なものを考えてください。

  • ほとんどの場合、電子メールアドレスはすでにデータベースにあるため、短いID(たとえば最大7つの数字)で参照できます。署名は、のように非常に単純なものにすることができますsubstring (base64_url(md5(email+salt)), 0, 5)。5base64文字は64^5=約10億の可能性です。これはおそらく十分に安全です(そして、誰かが間違った電子メールアドレスで登録した場合の実際の被害はどうなるでしょうか)。したがって、URLは、、http://domain.com/activation?email=1234&key=aD5Y_またはhttp://domain.com/activation?e=1234&k=aD5Y_になりhttp://domain.com/activation?e=1234aD5Y_ます。最後の形式では、最後の5文字がキーであることがわかっているため、残りはIDです。コード例では、md5が8ビット文字列形式(16進文字列形式ではない)で返されることを前提としており、base64_urlはurlセーフなbase64メソッドを使用することに注意してください。また、塩に関するいくつかの背景情報。
  • メールアドレスのIDが長い場合、またはURLにエンコードする必要がある場合、または上記がまだ十分に短い場合は、さらに短い形式を検討してください。基本的に、これはあなた自身のURL短縮をもたらすでしょう。電子メールにリンクを挿入する直前に、ランダムな5文字の文字列を生成します。この文字列をキーとしてmemcached(またはデータベース)に挿入し、値として元のURLを指定します。次に、URLはになりますhttp://domain.com/redirect?key=rT-tW。アプリでこれが表示されたら、database / memcachedから元のURLを取得して、そこにリダイレクトします。

システムが以下に対して堅牢であることを確認してください。

  • 誰かが電子メールアドレス(彼らの実際の電子メール)を入力し、あなたはリンクを送信します
  • その人は、リンクをクリックする前に、自分の電子メールアドレスをWebサイト上の偽物に変更します。あなたは、新しい(偽の)電子メールアドレスに新しい電子メールを送信します。
  • 彼らは今最初の電子メールからのリンクをクリックし、あなたのウェブサイトは2番目の(偽の)フォームで彼らの電子メールアドレスを確認します。

これを行う1つの方法は、上記で提案したように、キー生成で電子メールアドレス自体(たとえば、ユーザーIDだけでなく)を使用することを確認することです。

于 2012-02-20T17:40:57.847 に答える