私はこれまでユーザー認証システムを作成したことがなく、このプロジェクトではセキュリティと効率のバランスをとる必要があります(つまり、セキュリティの終わりに何百人もの工数を費やすことはできませんが、パスワードとログイン情報を保持する必要があります安全)。
認証とセッションにExpressフレームワークとパスポートでNode.jsを使用しています。
私がこれまでに行った調査では、解決すべき3つの問題が示されています。今日まで、私はこれらの問題に共通の解決策が存在するかどうかを文字通り知りませんでした。数時間ランダムに調査を調べても、見つけた答えの完全性に自信が持てませんでした。
問題点:
暗号化されていないプレーンテキストのパスワードをデータベースに保存しないでください(考えられる答え:サーバー上でパスワードをソルト/ハッシュし、データベースにハッシュを保存します)。
安全でないhttp接続を介してプレーンテキストのパスワードを渡さないでください(考えられる答え:A--認証プロセスにのみHttpsを使用します。その後httpを使用します。B--ログインページでユーザーにランダムなソルトを送信し、ハッシュします。パスワードクライアント側で、データベースストレージのハッシュを解除して再暗号化します。)
GPUが毎秒700,000,000のパスワードで解読できるような弱い暗号化方式を使用しないでください。(考えられる答え:bcrypt)
これらは、3時間の調査で私が見つけた最も賢明な答えです。これらが十分であるかどうか、それらの弱点は何か、またはどのような代替手段が利用できるかはわかりません。さらに洞察をいただければ幸いです(注:わかりません。httpsはパスワードが送信されるときにパスワードを十分に保護していますか?)