ユーザーがログインページにメールアドレスとパスワードを入力できるシステムを構築しています。ユーザーがそれを行った後でサインアップボタンをクリックすると、ユーザーをサインアップページにリダイレクトする前に、そのデータがLocalStorageに保存されます。
次に、サインアップページはLocalStorageをチェックし、前のページからの電子メールとパスワードを自動入力します。
私の質問は、LocalStorageはそのタイプのデータを格納するのにどの程度安全ですか?この方法でRAWパスワードを保存することは悪い考えのようです。そうは言っても、それはすべてユーザーのデバイス上でローカルです。どのサーバーにも何も送信されないため、攻撃の可能性が低くなります。
また、サインアップページでアイテムを取得した後、LocalStorageからアイテムを削除することも検討しました。それはそれをより安全にします。
RAWパスワードとこのタイプのデータを保存するためのLocalStorageはどの程度安全ですか?
ひどい考え。クライアント上やサーバー上ではなく、ページ間でパスワードをクリアテキストで保存しないでください。ページフローを再設計します(たとえば、最初のログインページでユーザー名を入力し、それが存在しない場合は登録ページに分岐します)。それができない場合は、パスワードを再入力してもらいます。
次の理由により、LocalStorageにパスワードを保存しないでください:
問題の可能な解決策:
ユーザーがログインボタンをクリックすると、サーバーでパスワードを直接ハッシュ(+ salt)してユーザーのセッションに保存できます(セッションデータはサーバーに保存されます)。次に、ユーザーがサインアップフォームを送信するときに、ハッシュされたパスワードとソルトをデータベースに保存する必要があります。この解決策は技術的な観点からは可能ですが、一般的ではないため、ユーザビリティの観点からは非常に奇妙なので、回避する必要があります。
Brezelbubが述べたように、「Googleログイン」フローを使用できます。
ログインフォームの下に登録ボタン/リンクを表示します。これが最も一般的な方法です。
この回答が、使いやすく安全なログイン/サインアップ設計を選択するのに役立つことを願っています。