だから、いくつかの背景。現在、Android向けのソーシャルメディアアプリに取り組んでいます。 Javaでプログラミングしており、MySQLデータベースとストレージの更新を処理するPHPバックエンドへの接続にOKHTTP3を使用しています。
私の質問はこれです:パスワードをどのように処理する必要がありますか?ユーザーがログインフォームに認証情報を入力したら、パスワードをハッシュして(bcryptを使用する予定です)、PHPバックエンドですぐに保存できるように送信しますか?またはPHPバックエンドはより多くのセキュリティハッシュまたは暗号化を行う必要がありますか?
1.ユーザーがサインアップ用の資格情報を入力する2.パスワードがハッシュ化される3.資格情報がサーバーに送信される4.資格情報がMySQLに入力される-別に何をすべきか?これで大丈夫ですか?
読む ユーザーのパスワードをサーバーに送信するiPhone/Androidアプリを作成し、セキュリティを確保する方法は? は、私の質問に十分に答えていませんでした。
ハッシュの目的を誤解している。
暗号で保護されたハッシュは一方向の関数であるため、ブルートフォース以外では元のテキスト(パスワード)を特定できません。
あなたの例では、元のテキストを見つける必要はありません。攻撃者がハッシュを盗んだ場合でも、新しいハッシュを生成する代わりに盗まれたハッシュを使用するようにアプリのコピーを変更するだけで、元のパスワードを知らなくてもサインインできます。
サーバーはアプリではなく内部でハッシュを実行する必要があります。 (クライアント側)
パスワードの場合は、BCryptなどの作業負荷の高いスローハッシュを使用する必要があります。攻撃者のブルートフォースハードウェアの方がはるかに高速であることを知っているため、これはターゲットハードウェアで(適切なDoS保護を使用して)約100msかかります。
ハッシュ関数がどんなに遅いとしても、弱いpassword
sは保護できないことに注意してください。
また、モバイルユーザーはプレーンなHTTP接続を偽装するために簡単に使用できる共有WiFiを使用する可能性があるため、アプリとサーバーの間でHTTPS接続を使用していることを確認してください。