(今のところこの質問が Stack で出されていないことに驚きましたが、検索を行ったところ何も見つかりませんでした oO)
私はサービス ベースの webapp に取り組んでいますが、ユーザー ログインを処理するための最良の方法は何だろうと思います。これまでのところ、私は持っています:
- ユーザーがログインすると、クレジットが提供されます。パスワードは、POST 経由でサーバーに送信されるよりも、ローカルでソルト化およびハッシュ化されます (そのため、スニッフィング ユーザーは元のパスワードを取得できません。つまり、他のサイトでパスワードを確認することはできません)。
- ログインとハッシュ化されたパスワードは、TTL が 15 分の Cookie に保存されます (Web アクションごとに取り消されます)。
- パスワードはサーバー側でソルト化され、再度ハッシュ化され、データベースに保存されているパスワードと比較されます (したがって、パスワードは異なるソルトで二重にハッシュ化されます。これは、データベースに侵入する誰かのためのものです - 彼らはまだ回復できません)ログインクレジット)
- ユーザーは、1 つの IP から 5 分間に最大 3 回のログイン試行を行うことができます
- ユーザーは、最後に成功したログイン試行と失敗したログイン試行に関する情報を、日付と IP とともに取得します
ハッシュ化されたパスワードの代わりに一意のセッション ID を Cookie に保存する方が良いと誰かが指摘していましたが、なぜそれがそれほど重要なのか疑問に思います。誰かがパケットを盗聴した場合、セッション ID に関係なく、すべてのデータでログインからパケットを取得できます。正当なユーザーを装い、自分自身でログインする必要があります。ログインとハッシュ化されたパスワードをCookieアプローチに保存するよりも、保存されたセッションIDアプローチの他の利点はありますか?