登録確認メールのリンクURLにメルアド記載はOK?

このQ&Aのポイント
  • ユーザーが登録したら、メールを送信。ユーザーがメールのリンク先をクリックしたら、認証を行っています。
  • 古いコードでは、登録確認メールのリンクURLにメルアドが直接書かれていました。
  • メールアドレスがリンクURLに含まれている実装にはセキュリティ的な問題がある可能性があります。しかし、ユーザーにのみ送信される内容であれば、正しくハッシュが設定されている場合は問題ありません。
回答を見る
  • ベストアンサー

登録確認メールのリンクURLにメルアド記載はOK?

1.ユーザーが登録したら、メールを送信 2.ユーザーがメールのリンク先をクリックしたら、認証 というのをやっています。 古いコードを見たら、 登録確認メールのリンクURLが、 http://○○/hoge.php?hash=△△&email=メールアドレス となっていました。 「&email=メールアドレス」 とメルアドがリンクURLに直接書かれているのが気になったのですが、 確認メールのリンクURLに、「メールアドレス」が含まれている実装って、 セキュリティ的に何か問題あるでしょうか? それとも、 ユーザーにだけ送信される内容なので、hashさえちゃんとしておけば これで大丈夫なのでしょうか?

  • re999
  • お礼率61% (476/777)
  • PHP
  • 回答数5
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • dscripty
  • ベストアンサー率51% (166/325)
回答No.5

勝手に返答! 「hash内容は、」 今回のケースではメールアドレスを含める意味無し。 推測して解答! 「参考にしているコードでは、」 1) 参考にしているコードには別のいみがある。 2) 参考にしているコードが参考にしたコードに書かれていた。 3) 参考にしているコードの作者がその時は無知だった。

re999
質問者

お礼

回答ありがとうございます。 >「hash内容は、」 >今回のケースではメールアドレスを含める意味無し。 はっきり言っていただけると助かります >3) 参考にしているコードの作者がその時は無知だった。 古いコードなので、今のやり方ではないのかもしれないと思い、質問してみました

その他の回答 (4)

  • dscripty
  • ベストアンサー率51% (166/325)
回答No.4

[ANo.3] さんの回答を、勝手に想像して解説すると。。。 仮登録フォームの処理(当然SSL) 1) 仮登録するとき、十分に推測不能でユニークな番号を発行して、メールアドレスと日時を一緒に DB へ。 2) 「1)」 で発行した番号をつけて、登録の URL をメールで送信。 3) 登録希望者がリンクをクリックしてアクセスしてきたら、 「1)」で発行した ID を DB に問い合わせる。問題なければ、本登録フォームへ。 4) 有効期限切れや不正な番号なら、エラーメッセージを表示して、再度仮登録フォームへ。※有効期限は適宜設定。 本登録フォームの処理(当然SSL) 5) メールアドレスは 「1)」 で発行した番号から DB に問い合わてあるのでそれを使う。 6) 登録が完了したら、「1)」 の番号を無効にする。 7) 登録完了のメールを送る。 かな? もっと厳密にやるなら、 仮登録したときの IP アドレスと、本登録の時の IP アドレスも比べる。 有効期限を十分に短くする。※一般的な電子メールクライアントの新規メールチェック時間の数倍~10倍程度? でも、この辺のことは、モノの本ならどれでも書いてあるとおもうよ?

re999
質問者

お礼

回答ありがとうございましたー

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.3

>具体的には、メルアドの取得方法が分かりません。 ハッシュは何のために付けているのでしょうか?そのハッシュからデータベースに仮登録したレコードを特定出来ませんか?それとも(まさかとは思いますが)テーブルにハッシュを保存している列が存在しないのでしょうか。

re999
質問者

補足

回答ありがとうございます。 >そのハッシュからデータベースに仮登録したレコードを特定出来ませんか? 特定できます >それとも(まさかとは思いますが)テーブルにハッシュを保存している列が存在しないのでしょうか。 存在しています 参考にしているコードでは、 ・ゲット取得したメールアドレスを用い、改めてnewhashを作成 ・「ゲット取得したhash」と「newhashの一致を確認」した後、レコード取得 しているのですが、 確認メールのやり方としては、そんなまどろっこしいことをしなくても、 単純に「ゲット取得したhash」を用いて、レコード取得すればいい、 ということでしょうか? また、参考にしているコードでは、ハッシュ化の際、メールアドレスを連結させているのですが、 hash内容は、「十分に推測不能でユニークな番号」だとすると、 そこにメールアドレスを混ぜる必要などない、ということでしょうか?

  • dscripty
  • ベストアンサー率51% (166/325)
回答No.2

管理側としては、 アクセスログに、メールアドレスが残ってしまうと、情報漏えいとか、ログの取り扱いに細心の注意が必要で、面倒かな? ユーザとしては、 自分のメールアドレスが URL に含まれるリンクをクリックするのは抵抗あるなぁ。。。

re999
質問者

補足

回答ありがとうございます。 >アクセスログに、メールアドレスが残ってしまうと、情報漏えいとか、ログの取り扱いに細心の注意が必要で、面倒かな? 確かにそうですね。アクセスログについては、全く気が付きませんでした >ユーザとしては、自分のメールアドレスが URL に含まれるリンクをクリックするのは抵抗あるなぁ。。。 貴重なご意見ありがとうございます。 実は、自分も同じ違和感を感じていました。 質問した時点では、心情的な部分は全く気にしていなかったのですが、 考えてみれば、 例えセキュリティ的に問題なかったとしても、 「リンク」をクリックするのを躊躇う人がちょっとでもいるのだとしたら、 そこは考え直さなければいけないのか、とちょっと思いました。 ちなみに、その場合、どう実装すれば良いのでしょうか? 具体的には、メルアドの取得方法が分かりません。 これまでは普通にgetで取得していたのですが… ハッシュに混ぜるってことでしょうか?

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

メール内容が流出したりのぞき見られたりしたときにはメールの宛先もバレバレですから、メール本文に宛先のメールアドレスが含まれていることにセキュリティ的な問題はないです。 ただユーザーが目で見てわかるものを直接URLに入れてしまうと、その部分(今回はメールアドレス)を書き替えてアクセスしてくる可能性はあります(もちろんそういうアクセスは無効になりますよね)。そういうことを思わせるような(ユーザーの悪戯心というか知的好奇心を刺激するような)実装はやめた方が無難ではないかと思います。お互いにとって無駄ですから(苦笑)。ハッシュの文字列なら「完全一致しないとダメなんだろう」と思ってくれますので(それでも「試す」人はいますけどね)。

re999
質問者

補足

回答ありがとうございます。 >メール本文に宛先のメールアドレスが含まれていることにセキュリティ的な問題はないです 参考になりました >ユーザーの悪戯心というか知的好奇心を刺激するような)実装はやめた方が無難ではないかと思います そうですね。これから一から作成するのであれば、確かに避けたほうがいいかも、と思いました

関連するQ&A

  • 登録確認メールで、24hのみ有効にしたい

    ユーザー登録をした際、ユーザー宛確認メールを送信しているのですが、 リンクの有効期限設定の仕方が分かりません。 例えば、24hのみ有効にしたい場合、具体的に、どのように実装するのでしょうか?

    • ベストアンサー
    • PHP
  • メールアドレスの確認において

    お世話になっております。 web上の多くの会員登録にあるように、ブラウザ上で登録したメールアドレスの確認という意味で、入力したアドレス宛に、アクセスして欲しいファイルに、認証するための入力してもらったアドレス、およびUNIXのタイム関数を入れて、以下のようなURLを送信いたします。 http://localhost/confirm/index.php?time=$time&mail=$mail 以上の流れは、このページを参考に、 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1782899 メール送信したアドレスをクリックしてもらった時に、仮登録から本登録へと、考えているのですが、送ったメールに記載のあるURLをクリックしてもらい、認証させるために必要な日時、およびアドレスは、どのように取得出来るのでしょうか? 色々と調べてはいるものの、ヒントとなるものさえ見つからずにおります。認証という流れにおいて間違った考えであれば、その指摘も含め、ヒントだけでもご教授願えれば幸いです。お忙しい中恐縮ですが、宜しくお願い致します。

    • ベストアンサー
    • PHP
  • Googleに登録していないのに確認メールが届いて

    Googleに登録していないのに、Googleから携帯メールに、「Googleによるメールアドレスの確認」というメールが届きました。 確認用リンクをクリックしない限りアカウントが有効になることはないと書いてあったのですが、それを読む前に、うっかりURLをクリックしてしまいました。 誰かが私の携帯アドレスを使ってアカウントを作成したということなのでしょうか。 アカウントを削除しようと思い、けれどもパスワードが分かりませんので、メールアドレスを入力すればそのメアドにメールが送付されてくるという「アカウント復旧」というものを試してみようとしたのですが、Googleから送付されてくるはずのメールも届きません。 どうすればよいかご教示いただければ幸いです。どうぞよろしくお願いいたします。

  • PHPでの仮登録時の会員認証メール送信について

    はじめまして。 現在PHP猛勉強中の初心者です。 (的外れだったり、情報が不足していましたらご指摘いただけましたら幸いです) 質問ですが、 現在、会員登録プログラムを制作中なのですが、登録手順として ・フォーム入力ページ(register1.php)    ↓ ・入力確認ページ(register2.php)    ↓ ・仮登録完了ページ(register3.php)  →※仮登録メール送信(認証用URLクリック) ・本登録完了ページ(register4.php) と遷移するようにしたいのですが、 仮登録完了メールが送信できない(送信されない?) でつまずいています。 ページ上ではエラー表示はされないですし、 DBを確認しても、仮登録はされている状態です。 下記に仮登録メール送信部分のソースを記載いたしますので、 ご確認のほどお願いいたします。 ↓ここから 仮登録完了ページ(register3.php)↓ $subject = "$site_name 仮登録完了メール"; $headers = "From: $support_mail\r\n"; $parameters = '-f' . $support_mail; $md5 = md5( $magic_code . $_POST['email1'] ); // $body = <<< _EOT_ ${_POST['name_kanji']} 様 この度は $site_name へのご登録ありがとうございます。 メールアドレス確認のために、下記のURLをクリックしてください。 $site_url/register4.php?email1=${_POST['email1']}&md5=$md5 登録メールアドレス:${_POST['email1']} ログインID:${_POST['email1']} 何かございましたら $support_mail まで お問い合わせいただけますよう、よろしくお願いします。 ---------------- $site_name $site_url _EOT_; mb_language( 'ja' ); mb_internal_encoding("utf-8") ; mb_send_mail( $_POST['email1'], $subject, $body, $headers ); ↑ここまで ソールに間違いがないとしたら、 メール送信を行う場合の、 php.iniの設定が何か必要なのか、 そのあたりもご教授いただけましたらうれしいです。 いろいろネットで調べてみたものの、 テスト環境でのメール送信サーバーの設置や プログラム周辺の設定に何か問題があるのか、 メール送信について私の知識でわかるような説明が 見つけられませんでした、、、 お手数ですが、大変困っておりますので、 何卒、ご回答のほどお願い申し上げます。

    • 締切済み
    • PHP
  • 確認メールのURLについて

    オンラインゲームの会員登録で確認メールが来たのですがURLがなく登録できませんでした もう一度登録しようとしたら このメールアドレスはすでに使用されています とでて、登録できないんですお問い合わせにメールしても返ってこないんです どうしたらいいでしょうか

  • モバゲーからメール再登録確認とか来たのですが・・・

    携帯にメールで、急に、 「【モバゲー】メール再登録確認」 と言う題名でメールが送られてきました。 私は、モバゲーは使ったことが無く、急に送られてきてビックリしました。 (携帯は長い間使っているので、なんらかの時に、モバゲーを使ったかもしれないのですが、確か登録とかはしてないと思います。) 誰かが、私のメールアドレスと間違えて登録したのか、イタズラで登録したのかわかりません・・・ 内容は、メールアドレスを再登録しますと書いてあって、URLも乗っていました。クリックすると確認が完了しますとか書いてありました。 ちなみに、このようなメールはどのようなときに、モバゲーから送信されるものなのでしょうか?誰か知ってる方教えてください!

  • メールのメルアドがリンクになりません

    Windows 7 Home Premiumで windows live メール2011です。 PCのメールを出す時に 自分のメルアドを載せて送信をする時があるのですが その時に普通ならメルアドを記載するだけで リンクになりますよね? それが黒い文字で リンクになって無い時があるんです。 困っています。 原因と対処法を教えて頂けると大変ありがたいです。 どうぞよろしくお願い致します。

  • Lotus Notes でのURLへのリンク 

    仕事でメールソフトとしてLotus Notesを使用しています。 頻繁にURLアドレスを入力して複数の配信先に一括送信した場合、 送信したメールでURLを確認すると、自分自身やNotesを利用している方々は問題ないのですが、 他のメールソフトを利用されている複数の方々から 入力したURLをクリックするだけではリンクできない、とのクレームが最近、非常に増えました。 そこで、自分自身の自宅のメールに送信してみたところ、 Outlook Express 6.0なのですが、受信したメールのURLアドレスにリンクが貼られておらず、 クリックしてもURLへのアクセスは出来ませんでした。 Outlook Expressですと、URLを入力した時点でリンクが貼られ メールを受信した側にもリンクが貼られると思うのですが、 同様に、Notesからの送信の際も均一にリンクを貼る方法はあるのでしょうか?。 ご教示下さい。

  • 登録完了メールが届きません

    送信完了 認証メールを送りました。 メール内のURLをクリックして認証を完了させてください。 ※メールが届かない場合 よくあるご質問「メールが届かない」を参照してください。 お礼文が入力されないので登録未完了?。担当の方にメール質問して No. ***・・・なお、メール認証が完了しない場合は諸動作に制限が かかったままになってしまいますので、一旦退会し、再登録することも ご検討ください。 退会して再登録しましたがメールアドレス宛に登録完了メールが来ません。 差出人セーフリスト確認もOK。 OKWAVE ID及びパスワード入力可能で自分のページは閲覧できます。 前回と同じです。 どうすれば登録完了メールが届き、記載URLからの登録完了出来ますか。 同じ経験がある方アドバイスお願いいたします。

  • URLのパラメータを取得しリンクに渡すには?

    Javascriptで、URLのパラメータを取得し、リンクにパラメータを渡したいです。 例えば、現在のURLが、 http://www.hogehoge.com/hoge.php?page=hoge1だとします。 そのページに、様々なリンクがあるとします。 <リンク例> http://www.hogehoge.com/moge/moge.php http://www.hogehoge.com/boge/boge.php http://www.yahoo.co.jp/auctionxx.html このうち、/moge/以下のページへのリンクにのみ、自動で現在のURLのパラメータを渡したリンクにしたいです。 つまり、 http://www.hogehoge.com/moge/moge.php ↓ http://www.hogehoge.com/moge/moge.php?page=hoge1 というリンクにしたいです。 当然現在のURLにパラメータが存在しない場合は、そのままのリンクになります。 また、他のディレクトリや他のドメインのサイトにはパラメータを渡さず、変更せずにそのままのURLのリンクにしたいです。 <リンク例> http://www.hogehoge.com/moge/moge.php ○変更 http://www.hogehoge.com/boge/boge.php ×変更なし http://www.yahoo.co.jp/auctionxx.html ×変更なし よろしくお願いします。