2012-02-07 8 views
1

私はPHPでメールクライアントを作っています。私の問題は、パスワードをデータベースに保存しておき、メールを送信するときにプレーンテキストで取得する必要があることです(私はユーザー認証のためにパスワードを必要とします)。パスワードを後でプレーンテキスト(php)に保存する方法

安全な方法はありますか?

+0

ユーザーの操作後にメールのみが送信される場合、ユーザーはパスワード(または保存されたメールサーバーパスワードの暗号化キーとして機能するパスワード)を入力できます。しかし、私はこれが当てはまらないと仮定し、後で使用するためにパスワードを保存する必要があります。あれは正しいですか? – Wiseguy

+0

はい、正しいです。メールを送ったり、捜索したりする際に、パスワードが必要です。ユーザーがメールボックスを押しているときなど、メールを取得するためにパスワードが必要です。 – user1195745

+0

パスワードが必要なのは、ユーザーがアクティブになっているときだけです。セッションに保存し、永続的に保存しないでください。それは、ユーザーが最初にログインするためにパスワードを入力することを前提としています。 – Wiseguy

答えて

2

パスワードをプレーンテキストとして保存しないことをお勧めします。

認証には、パスワードのMD5というハッシュを生成し、データベースに格納されているハッシュを比較します。ハッシュが一致すると、ユーザーは認証されます。

ユーザーがパスワードを忘れた場合は、パスワードをリセットする必要があります。

+1

Askerがメールサーバーにパスワードを送信する必要があるように聞こえます。これがログインシステムのためだけのものだったなら、アドバイスは正しいですが、このシナリオには当てはまりません。 – Wiseguy

+2

MD5をパスワードとして使用しないでください。パスワードは、塩を使ったハッシュアルゴリズムの組み合わせでハッシュされる必要があります。 – Stephen

0

クレイグが正しいです。しかし、あなたの本当の疑問は、「後で使うためにデータを保存するにはどうすればいいですか?

この場合、あなたはカップルのオプションがあります。

  • あなたは、このようなMySQLの、MSSQL、SQLiteの、またはOracleなどのデータベースを使用することができます。
  • あなたは、データベースからパスワードを照会することができ、サーバのハードディスク
0

上のファイルに書き込むことができます。

は、次に、それは、あなたが開いて、平文に書き込み、それをGoogleに

fwrite(), fopen() 

を使用することができます取得した後、例の多くは、彼らのです。しかし、私は@ craig1231に同意します。それは、重要な情報を平文に入れてハッシュしないことが賢明でなく安全です。

2

(前述のようにではない、認証のために)あなたはしかし、後で目的のために秘密を格納する必要がない場合は、PHPの

パスワードごとに鍵を選択し、その鍵を別の場所に保管してから秘密を保管します。おそらく、パスワードを所有するアカウントのいくつかの静的パラメータに基づいてキーを抽出するのが最善の方法でしょう。

このアプリケーションロジックは、パスワードを解読するためにも必要です。したがって、暗号化された値を格納しているデータベースから分離されたどこかの領域で暗号化ロジックが実行されているといいでしょう。

関連する問題