web-dev-qa-db-ja.com

自動ログインのためのパスワードの保存

セキュリティのためにパスワードを保存するときはいつでも、パスワードを暗号化する必要があることを知っています。
しかし、自動ログイン用に保存するときにパスワードをどのように暗号化すればよいかわかりません。

パスワードがユーザーをチェックするためだけのものである場合、pbkdf2のような一方向暗号化でパスワードを暗号化できます。ただし、パスワードは保護する必要があり、プログラムの起動時にパスワードにアクセスする必要があります。パスワードを安全に保存して使用するにはどうすればよいですか?

4
CodingBear

しかし、自動ログイン用に保存するときにパスワードをどのように暗号化すればよいかわかりません。

自動ログインは、手動ログインで使用されるパスワードに基づいていません。ログインが成功した後に生成される個別の資格情報(識別情報と非識別情報に基づく)があり、その資格情報は暗号化されたCookieまたは同様のストレージメカニズムでクライアントに保存されます。 このアプローチの詳細はこの記事にあります

セキュリティのためにパスワードを保存するときはいつでも、パスワードを暗号化する必要があることを知っています。

ここでの「暗号化」の使用は危険であり、暗号化の実装は一般に双方向です。パスワードは「ハッシュ」する必要があります。これは、元の入力を表示する簡単な方法を提供しない一方向のメカニズムです。

事実上すべてのカスタム認証スキームは安全に設計されていないことに注意してください。必要がない場合は、これを構築しないでください。

10
FMJaguar

コメントの制限を超えたため、回答として配線しています。

HTTPプロトコルに従う必要があります。独自のソリューションでパスワードを保存することは本質的に安全ではありません。サーバーにアクセスできない場合でも、HTTPエンドポイントにアクセスできますか?通常のログインを行い、設定されているCookieを確認します。セッションが必要です。つまり、クライアントでも同じことができます。セッションを保存することは私が得ているものです。

HTTPでない場合、またはHTTPである場合でも、OSキーチェーンを使用してパスワードを保存する必要があります。

Mac- https://github.com/marketplacer/keychain-Swift

Windows: https://stackoverflow.com/questions/12539382/how-to-remember-username-or-password-for-login-form および関連SO質問 https://stackoverflow.com/questions/12539382/how-to-remember-username-or-password-for-login-form

この場合、OSセキュリティにユーザーアカウントの保護を処理させ、ホイールの再発明は行わないでください。次に尋ねる必要がある質問は、ユーザー設定を保存するOSのベストプラクティスを実装する方法です。これは、操作が簡単でほとんどのライブラリの一部です。

2
Abhishek Dujari