- ベストアンサー
登録確認メールのリンクURLにメルアド記載はOK?
- ユーザーが登録したら、メールを送信。ユーザーがメールのリンク先をクリックしたら、認証を行っています。
- 古いコードでは、登録確認メールのリンクURLにメルアドが直接書かれていました。
- メールアドレスがリンクURLに含まれている実装にはセキュリティ的な問題がある可能性があります。しかし、ユーザーにのみ送信される内容であれば、正しくハッシュが設定されている場合は問題ありません。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
勝手に返答! 「hash内容は、」 今回のケースではメールアドレスを含める意味無し。 推測して解答! 「参考にしているコードでは、」 1) 参考にしているコードには別のいみがある。 2) 参考にしているコードが参考にしたコードに書かれていた。 3) 参考にしているコードの作者がその時は無知だった。
その他の回答 (4)
- dscripty
- ベストアンサー率51% (166/325)
[ANo.3] さんの回答を、勝手に想像して解説すると。。。 仮登録フォームの処理(当然SSL) 1) 仮登録するとき、十分に推測不能でユニークな番号を発行して、メールアドレスと日時を一緒に DB へ。 2) 「1)」 で発行した番号をつけて、登録の URL をメールで送信。 3) 登録希望者がリンクをクリックしてアクセスしてきたら、 「1)」で発行した ID を DB に問い合わせる。問題なければ、本登録フォームへ。 4) 有効期限切れや不正な番号なら、エラーメッセージを表示して、再度仮登録フォームへ。※有効期限は適宜設定。 本登録フォームの処理(当然SSL) 5) メールアドレスは 「1)」 で発行した番号から DB に問い合わてあるのでそれを使う。 6) 登録が完了したら、「1)」 の番号を無効にする。 7) 登録完了のメールを送る。 かな? もっと厳密にやるなら、 仮登録したときの IP アドレスと、本登録の時の IP アドレスも比べる。 有効期限を十分に短くする。※一般的な電子メールクライアントの新規メールチェック時間の数倍~10倍程度? でも、この辺のことは、モノの本ならどれでも書いてあるとおもうよ?
お礼
回答ありがとうございましたー
- shimix
- ベストアンサー率54% (865/1590)
>具体的には、メルアドの取得方法が分かりません。 ハッシュは何のために付けているのでしょうか?そのハッシュからデータベースに仮登録したレコードを特定出来ませんか?それとも(まさかとは思いますが)テーブルにハッシュを保存している列が存在しないのでしょうか。
補足
回答ありがとうございます。 >そのハッシュからデータベースに仮登録したレコードを特定出来ませんか? 特定できます >それとも(まさかとは思いますが)テーブルにハッシュを保存している列が存在しないのでしょうか。 存在しています 参考にしているコードでは、 ・ゲット取得したメールアドレスを用い、改めてnewhashを作成 ・「ゲット取得したhash」と「newhashの一致を確認」した後、レコード取得 しているのですが、 確認メールのやり方としては、そんなまどろっこしいことをしなくても、 単純に「ゲット取得したhash」を用いて、レコード取得すればいい、 ということでしょうか? また、参考にしているコードでは、ハッシュ化の際、メールアドレスを連結させているのですが、 hash内容は、「十分に推測不能でユニークな番号」だとすると、 そこにメールアドレスを混ぜる必要などない、ということでしょうか?
- dscripty
- ベストアンサー率51% (166/325)
管理側としては、 アクセスログに、メールアドレスが残ってしまうと、情報漏えいとか、ログの取り扱いに細心の注意が必要で、面倒かな? ユーザとしては、 自分のメールアドレスが URL に含まれるリンクをクリックするのは抵抗あるなぁ。。。
補足
回答ありがとうございます。 >アクセスログに、メールアドレスが残ってしまうと、情報漏えいとか、ログの取り扱いに細心の注意が必要で、面倒かな? 確かにそうですね。アクセスログについては、全く気が付きませんでした >ユーザとしては、自分のメールアドレスが URL に含まれるリンクをクリックするのは抵抗あるなぁ。。。 貴重なご意見ありがとうございます。 実は、自分も同じ違和感を感じていました。 質問した時点では、心情的な部分は全く気にしていなかったのですが、 考えてみれば、 例えセキュリティ的に問題なかったとしても、 「リンク」をクリックするのを躊躇う人がちょっとでもいるのだとしたら、 そこは考え直さなければいけないのか、とちょっと思いました。 ちなみに、その場合、どう実装すれば良いのでしょうか? 具体的には、メルアドの取得方法が分かりません。 これまでは普通にgetで取得していたのですが… ハッシュに混ぜるってことでしょうか?
- shimix
- ベストアンサー率54% (865/1590)
メール内容が流出したりのぞき見られたりしたときにはメールの宛先もバレバレですから、メール本文に宛先のメールアドレスが含まれていることにセキュリティ的な問題はないです。 ただユーザーが目で見てわかるものを直接URLに入れてしまうと、その部分(今回はメールアドレス)を書き替えてアクセスしてくる可能性はあります(もちろんそういうアクセスは無効になりますよね)。そういうことを思わせるような(ユーザーの悪戯心というか知的好奇心を刺激するような)実装はやめた方が無難ではないかと思います。お互いにとって無駄ですから(苦笑)。ハッシュの文字列なら「完全一致しないとダメなんだろう」と思ってくれますので(それでも「試す」人はいますけどね)。
補足
回答ありがとうございます。 >メール本文に宛先のメールアドレスが含まれていることにセキュリティ的な問題はないです 参考になりました >ユーザーの悪戯心というか知的好奇心を刺激するような)実装はやめた方が無難ではないかと思います そうですね。これから一から作成するのであれば、確かに避けたほうがいいかも、と思いました
お礼
回答ありがとうございます。 >「hash内容は、」 >今回のケースではメールアドレスを含める意味無し。 はっきり言っていただけると助かります >3) 参考にしているコードの作者がその時は無知だった。 古いコードなので、今のやり方ではないのかもしれないと思い、質問してみました