2017-06-17 9 views
2

PHPには、BCryptを使用して、パスワードを生成して検証するための関数が2組含まれています。これにより、データベーステーブルに格納されているパスワードハッシュを簡単に使用できます。PHPを使用しないデータベースのPHPパスワードの生成

唯一の問題は、通常のデータベースクライアントを使用して手動でパスワードを追加することが難しいことです。通常、私はちょうどユーザーの行を追加または編集するための小さなPHPスクリプトを作成することになります。

問題は、PHPと同じハッシュを実装しているさまざまなデータベースに追加できる関数またはライブラリがあるかどうかです。それに失敗すると、スタンドアロンのアプリケーションはありますか?

この質問は、一般的なWebデータベースPotgreSQL、MySQL、SQLiteに関連しています。個人的に私はウェブ開発のためにMacとLinuxを使っていますが、私はWindowsで教えることが多いです。

+0

*リソース*をお探しですか?それは、ここでは*話題にはなりません。あなたの質問がプログラミングに関するものであれば、私には分かりません。もしあなたの質問であれば、別のプログラミング言語で同じ暗号方法を使うことができます。あなたはそれをやって自分のやり方を書かなければならないでしょう、**それに注意してください!! **。 – Nytrix

+0

あなたはpassword_hashとpassword_verifyのネイティブなmysql関数に相当するのでしょうか? – barudo

答えて

3

私が知る限り、password_hash()またはpassword_verify()をエミュレートするMySQL機能はありません。それには、パフォーマンス上の理由があります。高価なハッシュを多数使用しています。要点は、パスワードを推測しようとするサイバーサイープの速度を落とすことです。ほとんどのWebシステムでは、DBMSは希少なリソースなので、半分のCPU粉砕計算で負担をかけたくありません。ロードバランサプールに複製できるWebサーバーにそのワークロードを配置する方がよいでしょう。

小さな(そして安全な)PHPプログラムでパスワードリセット機能を構築するアプローチは正しいものです。また、セルフサービスパスワード回復機能を構築することもできます。 WordPressには優れた機能があります。ワンタイムユースリンク(nonceのリンクを含む)を含むメールを、新しいパスワードを要求するページに送信します。

+0

答えをありがとう。私は簡単にPHPスクリプトを書いてAjaxサービスとして使うことができると思います。 – Manngo

0

PostgreSQLには、便利な3つ目の拡張子pg_cryptoが付属しています。ハッシュ関数と対称鍵暗号化アルゴリズムを追加します。

は、私はいくつかの理由のためのWeb環境でのパスワードの暗号化&検証のためのデータベースを使用することを好む:pgcryptoのから

  1. crypt方法は、任意のPHPの方法よりも柔軟です。ハッシュアルゴリズムを移行し、同時にデータベースに2つの暗号化アルゴリズムを持たせることは可能です。これにより、パスワードが更新されたときに最も強力な暗号化が可能になります。
  2. パフォーマンスの観点からは、Webサーバーはしばしば読み込まれますが、データベースにはインデックスを使用した小さな読み取り専用のクエリが多数存在します。また、認証クエリを複数のセカンダリデータベースサーバに分散することもできます。
  3. セキュリティ上の観点から、Webサーバーは野生のインターネットに公開され、電子メール、ハッシュされたパスワードが存在するuser.accountテーブルを読み取ることができないデータベースユーザーを使用します。ユーザーを認証するには、提供されたパスワードが正しい場合にのみ、アプリケーションはユーザーアカウント情報を返すSECURITY DEFINER SQL関数を使用する必要があります。これにより、いずれかのWebサーバーからデータベースにアクセスする攻撃者は、アカウント情報にアクセスすることも、データベースに書き込むこともできなくなります。
関連する問題