2017-03-17 3 views
0

私はデータベースを作成しており、ユーザーパスワードを保存する必要があります。私はすでにクライアント側でパスワードをハッシュするためにbcryptを使用していますが、クライアント側でハッシュするだけで、ハッシュはデータベースに関する限り基本的にパスワードと同等になります。私はデータベースに格納される前にパスワードをハッシュしたいと思います。 SHA2(pwd)のようなMySQL固有のメソッドを使用する必要がありますか、またはサーバー上でbcryptを使用する方法がありますか?MySQL-サーバー側のパスワードハッシングを実装する方法

答えて

0

ここではBcyrptが役に立ちますが、クライアントではなくサーバー側でハッシングを実行する必要があります。クライアントは、正しいことが確認できるハッシュを生成するために必要なすべての情報を知ることはできません。サーバだけがその情報を持っています。

必要な作業は、HTTPSなどでパスワードを安全に通過させ、アプリケーションレイヤーにハッシュすることです。 MySQLだけでは、適切なパスワードハッシュを実行するのに必要な機能はありません。 SHA2は完全に不十分です。設計上高速ハッシュであり、すぐに不適切になります。パスワードハッシングアルゴリズムは、ブルートフォースパスワードを痛々しく高価にするのに意図的に遅いです。

+0

私はMITM攻撃からの保護のための良い習慣であると読んだので、私はクライアント上でハッシュしています。しかし、私の実際の質問はまさにあなたが言っていることです。サーバー側でbcryptを実装するにはどうすればよいですか?私は可能な限りSHA2を避けたいと思います。 – silvertiger

+0

私はあなたがそれをどこで読んでいるのか、それとも正しく読んでいるのか分かりません。私がクライアントサイドのハッシュを見たのは、チャレンジ・レスポンス・タイプのシステムであり、SSL/TLSがそれを無意味にしてしまったため、そのほとんどが死んでしまった。チャネル自体を保護することができる。 Hash * once *、正しく、あなたは大丈夫でしょう。 bcrypt、scrypt、または他のパスワード特有のハッシュアルゴリズム、特に調節可能な難易度のアルゴリズムは、ここで重要です。 – tadman

+0

MySQLはbcryptを実行することはできません。通常は、アプリケーション層にパスワードをハッシュする場合があります。それはJava、Python、Ruby、Node.js、PHPでもかまいません。事実上すべての人がbcryptを実装しています。 MySQLは、多くのRDBMsesと同様、単なるデータストアです。 – tadman

関連する問題