質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

セキュリティー

このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

3回答

1263閲覧

登録ユーザーがパスワードを忘れた場合の適切な処理は?

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

セキュリティー

このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

1グッド

6クリップ

投稿2017/07/16 01:38

編集2017/07/16 02:32

表題の通りなのですが、登録ユーザーがパスワードを忘れた場合の適切な処理というのは、どのようなものなのでしょうか?

例えば、ログインフォームのあるページで、「パスワードを忘れた方はこちら」みたいなリンクがあり、ユーザーはそのリンクをクリックして、登録時のメールアドレスを入力して送信すると、「メールを送信しました〜!」みたいなメッセージが表示されて、その直後にパスワードの再発行メールが登録アドレスに送信されるみたいな処理の場合なのですが、これって以下の問題がありますか?

フォーム送信後に成功メッセージを表示してしまうと、悪意のあるユーザーに、送信されたメールアドレスが登録されているかどうかを知られてしまう(ユーザーのプライバシーに関する懸念)
=> 単純に「入力されたアドレスにメール送信しました〜!」と、入力アドレスが正しかったかどうかについては言及しなければOKなのか?ただ、この場合、ユーザービリティー悪そうな。

悪意のあるユーザーが第3者のメアドをパスワード再発行フォームに入力して送信すると、該当登録ユーザーにパスワード再発行メールが配信されてしまう
=> パスワードをリセットしてからメール送信をするのではなく、ユーザーのメール内リンクのクリックをもって、パスワード再発行プロセスが始まるようにすればOKなのか?

ベストなやり方以外にも、一般的に合格点以上となる適切なパスワード再発行処理というのは、どういったものなのでしょうか?

参考

テラテイルの場合は、メアド送信後のページで、送信したアドレスにメール来なかったら、入力したアドレスが正しい登録アドレスか再度確認してくれというメッセージが表示されてました。

送られてきたメールには30分後に無効になるパスワード再設定リンクがあり、それをクリックすると、新しいパスワードを入力するテキストボックスがあって、送信するとテラテイルのトップページに遷移で終了(未ログインの場合は遷移先はログインページ)

musix55👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

問題(1)について

フォーム送信後に成功メッセージを表示してしまうと、悪意のあるユーザーに、送信されたメールアドレスが登録されているかどうかを知られてしまう(ユーザーのプライバシーに関する懸念)

これについては、ご認識の通りです。
対応としては以下のようなものがあります。

  • メールアドレスが登録されているか否かが分かる問題については許容する
  • メールアドレスとは別にログインIDを設定し、パスワードリセットの際にはログインIDを入力してもらう
  • 登録されていないメールアドレスが入力された場合も画面表示上は「メールを送信しました」とのみ表示する(ユーザビリティが低くなると懸念されている通り)

私の知る限り全部が優れていて欠点がないという方法はないので、いずれの長所を重視し、短所を許容するかという判断になります。

問題(2)について

悪意のあるユーザーが第3者のメアドをパスワード再発行フォームに入力して送信すると、該当登録ユーザーにパスワード再発行メールが配信されてしまう

『該当登録ユーザーにパスワード再発行メールが配信されてしまう』こと自体を避けることは難しいですが、以下の対応が考えられます。

  • メールアドレスの入力だけではパスワードリセットを開始せず、「秘密の質問の答」や「生年月日」「電話番号」などの情報を回答させる
  • 勝手にパスワードリセットを使用されても差し支えない実装にする

後者ですが、ご認識のように、

パスワードをリセットしてからメール送信をするのではなく、ユーザーのメール内リンクのクリックをもって、パスワード再発行プロセスが始まるようにすればOKなのか?

これでよろしいかと思います。なので、「秘密の質問」を用いる必要はないと考えます。

投稿2017/07/16 09:10

ockeghem

総合スコア11701

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/07/16 11:51

ご回答ありがとうございます!選択肢が整理され大変参考になりました。ありがとうございました!
guest

0

1つめ。

そのアドレスでユーザー登録があるかをユーザーに伝える必要は無いし、伝えない方が良いと思います。
これくらいの場合分けは考えた方が良いです。
(1)正当なユーザーが正しくメールアドレスを入れた場合
(2)正当なユーザーが間違って存在する他のユーザーのメールアドレスを入れた場合
(3)正当なユーザーが間違ってユーザー登録されていないメールアドレスを入れた場合
(4)悪意のユーザーがユーザー登録されている誰かのメールアドレスを入れた場合
(5)悪意のユーザーが存在するがユーザー登録されていないメールアドレスを入れた場合

さらに細かく分けると、ユーザー登録されていないメールアドレスの場合、
・実在するメールアドレス
・ドメインは存在するが実在しないアカウントのアドレス
・存在しないドメインの場合
がありますが、まあ、そこまで分けて考える必要は無いかと。
あと、ユーザー登録があっても、プロバイダ変更やキャリア変更などでメールアドレスが無効になってしまっているケースもありますね。これを救うのは難しい。

2つめ。
メールアドレス入力だけでパスワードリセットはあり得ないです。秘密の質問を入れたとしても同じ。
悪意もしくは単に誤りで、他人が自分のメールアドレスを入力した場合、その通知メールを見過ごしてしまうと、その人はその後、ログオンできなくなってしまいます。
秘密の質問でガードしたつもりでも、悪意のある人だと推測も出来るし、善意の誤入力の場合もたまたま一致する場合があります(「初めて買った車は?」⇒「カローラ」)。

通知メールの中のURLをクリックして、パスワードリセット画面に行くのは必須でしょう。

投稿2017/07/16 11:04

otn

総合スコア84423

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

基本的には登録されたメアドへのパスワードリセットメールをおくり
ワンタイムパスワードで再設定させるのが妥当
その際、ログを残して当該ユーザーに閲覧させるようにすれば
「自分はパスワードの再設定をさせた記憶がないので誰か悪意のユーザーが
操作した」と気づけます。

もちろん、あわせて本人しかわからないキーワードとを登録時に記憶しておき
それとの答え合わせをやっても構いませんが、おまじない程度の気休めだと
思っておいたほうがいいでしょう

投稿2017/07/16 06:10

yambejp

総合スコア114574

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/07/16 11:49

ご回答ありがとうございます。ログをユーザーに見せるという発想はありませんでした。参考になりました!ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問