ログインフローで2つの異なるエラーメッセージを作成しました。 1つはユーザーがメールを誤った場合で、もう1つはユーザーがパスワードを誤った場合です。
私が協力している開発者は、ハッキングの試みを回避するためにメッセージを1つだけにすることを提案しています。
質問:これは重要ですか?私の意図は、欲求不満を回避し、潜在的な問題について明確にすることです。
注:このアプリは保護者が学校で子供を迎えに行くためのものなので、プライバシーとセキュリティが重要です。
この質問がユーザーエクスペリエンスに関するものかどうかは完全にはわかりませんが、接線に影響する可能性があります。
間違ったパスワードと間違ったユーザー名(または電子メール)に対して別々のエラーメッセージを表示すると、ユーザーはシステムに特定のユーザー名が存在するかどうかを簡単に見つけることができます。彼らがしなければならないことは、そのユーザー名/電子メールとランダムなパスワードを入力することだけです。「間違ったパスワード」メッセージを受け取った場合、彼らはそのユーザーが存在することを確認しました。 「間違ったメール」というメッセージが表示された場合、受信していないことを確認しています。
これはおそらく秘密にされるべきいくつかの情報を漏らします、それでそれはそれがセキュリティの失効です。どのように深刻なセキュリティの失効です 議論の余地がある そしておそらくあなたの聴衆に依存します-私の非常に厳密なテストメカニズムに基づいていますが間違ったパスワードを使用してさまざまなWebサービスにログインしようとすると、ほとんどのWebサイトは、一般的なエラーメッセージ(「入力した電子メールアドレスまたはパスワードが間違っています」)を使用して、この情報の漏洩を回避します。
(Facebookは私が見つけた唯一の例外でした。おそらく、特定のユーザー名の存在がすでに公開されているためです。)
あなたの場合、私は間違いなく一般的なメッセージで行きます。それがフィッシングまたはソーシャルエンジニアリング攻撃の潜在的なベクトルであることを除けば、親がそのような情報を一般に利用可能にしたくないかもしれない正当な理由があります。
一つの普遍的な答えはありません。 IMO、開発者には関連する議論があります:セキュリティ。
あるいは、UXデザイナーとして、私は常に自分のユーザーエクスペリエンスを支持します。つまり、どの分野が間違っていたかを特定します。あなたのアプリは、親が手間をかけずに作業する必要があるもののように聞こえます。私の子供を迎えることは時宜を得た優先事項であるため、親として、私は自分のメールにアクセスしたり、パスワードをリセットしたりする必要がありません。
私の会社では、セキュリティは開発者に任されています。 UXは、プレゼンテーションと経験の流れを指示することができます。開発者は、UXソリューションを満たすために巧妙なセキュリティを考え出す必要があります。誰かがあなたの問題のために追加の作業をしなければならないでしょう:それはあなた、あなたの訪問者、またはあなたの開発者でしょうか?
UXデザイナーとして、ユーザーを支援するための決定が行われます。そして、ユーザーは余分な仕事をしなければならないものであってはなりません。
開発者が余計な作業をしたくない場合は、低投資のアイデアを提供します。たとえば、3回の不正な試行の後にユーザーをロックアウトします。
ユーザー名またはパスワードが間違っていることを示す単一のエラーメッセージを表示することをお勧めします。追加されたセキュリティ上の利点は、私の意見では潜在的なフラストレーションよりも重要です。ユーザーが間違って入力した可能性は2つしかありません(両方を間違って入力する可能性があるため、技術的には3つだと思います)。したがって、ユーザーが入力し直すのはそれほど面倒ではありません。
セキュリティの問題は主に情報のプライバシーに関するものだと思います。何度か失敗した後でロックアウトを実装した場合でも、個別のメッセージを使用すると、特定の電子メールアドレスが有効であることを誰かに知らせることができます。この情報は、特定のアプリを超えて他のハッキング/フィッシングの試みに使用される可能性があります。
長所と短所を比較検討し、リスクを完全に理解することをお勧めします。次に、誰もが異なるため、あなたの特定のケースに最適なものについて、知識に基づいた決定を行うことができます。
複数のエラーメッセージのリスクは何ですか?
開発者が指摘したように、個別のメッセージを提供すると、継承のセキュリティリスクがあります。悪意のあるユーザーがあなたのサイトに来て、メールでプラグインを開始した場合、アプリが「申し訳ありませんメールが存在しません」というエラーを返すと、アカウントが存在しないことがわかります。しかし、「パスワードが間違っています」と書かれたものを見つけ、サイトに登録されたメールを見つけたことがわかりました。彼らはアカウントの一部を持っているので、ブルートフォースを介して、またはフィッシング/ソーシャルエンジニアリングメールを新しく見つかったアカウントに送信することで、ハッキングの試みを開始できます。一部のサイトでは、アクティブアカウントの知識を恐喝テクニックとして使用することもできます。誰かのメールを知っていて、テッドクルード*と言って、アダルトビデオのWebサイトに入力しようとしたところ、「パスワードが間違っています」と返された場合、メールがアカウントにサインアップしていることがわかります。この情報は、一般に漏らされると恥ずかしいかもしれません。
1つのエラーメッセージでどのようにこれを修正しますか?
「電子メールまたはパスワードが正しくありません。悪意のあるユーザーは、電子メールが盗まれたかパスワードが間違っているかを知る手がかりがありません。攻撃やその他の悪意のあるものをステージングするための手段を提供しません。しかし、通常のユーザーにとってUXはより悪いものです。どの入力が正しくないかを明確に示さない場合、間違ったメールを使用したかどうか、タイプミスがあったかどうかは(すぐに)わかりません。パスワードを間違って入力しただけの場合は、すべて複数のメッセージで解決できます。
それは私にとって正しいのですか?
これはあなた自身で決める必要があるものです。そのような攻撃の危険にさらされていると思いますか?誰かが侵入した場合、リスクは何ですか? UXやセキュリティを重視していますか?
重要な考慮事項
新しいアカウントを登録するときに、すでに登録されている場合、サーバーは「Email already in use」と応答しますか?もしそうなら、同じ結果につながるので、単一のエラーメッセージを強制することによってnothingを解決しています。
*使用されている名前は架空のものです。生きているか死んでいるか、実際の出来事に実際に似ていることは、まったくの偶然です。
これは大きな議論の1つです:セキュリティに関連する場合でも、開発者はユーザーの操作に関する決定を担当する必要がありますか?見方、答えはノーです。相互作用とフローを定義するのはあなたであり、開発者が知らない多くのことを知っているのはあなたです。
実際のところ、最も滑稽なパスワード要件のいくつかを作成し、その後ほとんどのサイトとアプリケーションを作成した男 彼は間違っていたと認め、彼自身の推奨事項は良いよりも害が大きい !
したがって、開発者がセキュリティの懸念があると言った場合、彼が正しい可能性があるかもしれません(ヒント:常にセキュリティの問題がありますよ!)が、彼の仕事は機能することですそれらの懸念の周りで、あなたの仕事が間違っていると言わないでください。
ユーザビリティの観点からは、あなたがしたことは正しいです。 ONEフィールドに問題があることをユーザーが知っているので、ユーザーはそれを修正できます。これを行わない場合、ユーザーはユーザー/パスのさまざまな組み合わせを試す必要があります。おそらくシステムからロックアウトし、アクセスをブロックし、ユーザーを信じられないレベルに苛立たせます。摩擦を減らすことは常に良いことなので、それを減らすことができれば...やってください!
引数については「組み合わせの一部を知っている」ので、ハッカーはアドレスを見つけるまでアドレスを入力するだけではありません。完全に自動化された高度なアルゴリズムを使用しているため、ハッカーが遅れる可能性があります。一方、あなたのユーザーはバナナに行きます。
さらに、ほとんどのユーザーが1つまたは2つの「安全な」パスワードを持っていることは既知の事実です。それらを追い出し、パスワードを作成してもらった後、彼らは明白なことをやめます:誕生日などの簡単で覚えやすいパスワードを作成します。または、パスワードを紙を持参するか、コンピュータまたは電話のファイルに書き込むだけです(したがって、財布や電話を盗んだり、コンピュータにアクセスしたりする人にドアを開けます。最高のANTI-SECURITY!)
私はあなたがスペイン語を話すのを知っているので、この記事を見てください: Cuandomásseguridad es igual a inseguridad そしてあなたはパスワード、一般的なセキュリティ、およびそのUXへの影響に関する懸念のいくつかを確認できる。これには、48人を超えるユーザーが行った調査が含まれています(クレジットカードに関連していますが、洞察の一部はお客様のケースに適用されます)
あなたのアプローチは正しいです、あなたは摩擦を減らしているので、ユーザーはより多くの制御を持ち、ブロックされず、それらをブロックするたびに安全でないパスワードを作成する必要はありません。良いアプローチのための正しいセキュリティ対策を作成するのは開発者次第であり、文字通り彼らの仕事です
既存のユーザー名を明らかにする他のホールはないと想定しています。それ以外の場合、このホールを閉じることは無意味です。
アプリを離れたりログアウトしたりする場合でも、ユーザー名をアプリに記憶させることを検討してください。これはケースの99%をカバーし、タイプする必要が少ないため、より良いUXを提供します。
明らかに、それ自体はセキュリティリスクですが、ユーザー名が電子メールアドレスである場合は、とにかく電話で簡単に見つけることができるため、かなり無害です。アプリがユーザー名を保持していることをユーザーに知らせ、この機能をオフにする選択肢を提供します。
このオプションを使用すると、間違ったユーザー名を入力することは非常にまれになり、ログイン失敗時に2つの異なるメッセージを使用する必要はほとんどありません。
ほとんどの場合、「ユーザー名またはパスワードが無効です」というメッセージに沿ってメッセージを返しますが、実際には根本的な懸念を和らげることはほとんどありません。
たとえば、多くのサイトでは、新しいアカウントを登録して、「このアカウントはすでに登録されています!」というメッセージを探すこともできます。またはパスワードを回復して、「このアカウントは存在しません。新しいアカウントを作成しますか?」のようなメッセージを探してください。
真に安全であるためには、次のようなことを行う必要があります。1)ユーザー名とパスワードを単一の値としてハッシュして送信し、成功または失敗時に返す2)パスワードの回復 "アカウントがファイルにある場合にメールを送信する"と同様に、試行された登録のいずれか
安全なアプローチの問題は、使用したユーザー名、電子メールアドレス、またはパスワードを思い出せない人のためにブラックボックスを作成したことです。
Bob、BobSportsFan、Bob @ gmail.com、Bob @ hotmailcom、または400のパスワードのどれを使用しましたか?
ボブを回復しようとした場合、届かない可能性のある回復メールをどのくらい待ちますか?
結論
すでにブラックホールを構築している場合は、ページに何も表示されず、サインインしたり、電子メールを探索せずにサインアップしたりするのに役立ちません...確かに、セキュリティをさらに強化してください。
APIとUIが詳細なフィードバックまたはある種のページ上の回復を提供する場合...実際の脅威をだましていないので、ユーザーとできる限り詳細にしてください。