2016-10-21 1 views
0

emailhashというパラメータで構成されたクエリ文字列を持つ検証リンクを作成するとどう思いますか?電子メールとハッシュされたユーザーIDがsalt文字列で確認されています。それは安全ですか?

  • メールが登録されたユーザのHTMLエンコードされたプレーンな文字列のメールである、
  • ハッシュは、最初のパラメータの文字列を使用してデータベースから選択された固有IDのユーザ番号PHP関数password_hashの結果値であります固定された塩ストリング。

password_hashが自動的に塩を追加しても、(私は塩を切り替えることも考えていたが、1は、指定したメールのIDのユーザー数を推測することができ、password_hashに渡すと、クエリ文字列に有効なハッシュを取得します彼自身。)、私はそれが安全ではないと思う。

私はこのような何か考えた:その後、私は、ユーザーの電子メールにそれを送信します

// the result of SELECT from the database (I use Mysql) 
$id = '5'; 
// fixed salt string 
$salt = 'xbrENiBq6kb87WrZYhxS'; 
$email = urlencode($email); 
$key = $id . $salt; 
$hash = urlencode(password_hash($key, PASSWORD_DEFAULT)); 

// the resulted querystring: 
$url = "somesite.com/index.php?email=$email&hash=$hash"; 

を。

私に教えてください。あなたはどう思いますか?どうもありがとう!

答えて

0

エンコーディングによっては、様々な種類のエンコードをミックスして実際の値に達することができます。データベースと比較する最終的な結果はmd5文字列でなければなりません。この方法でパフォーマンスが低下することはありません。

SELECT md5(your_field) FROM table 

申し訳ありませんが悪い英語です。

+0

あなたは悪い英語のために申し訳ありません。しかし、あなたのコードの周りに「うまく書式を設定する」必要があります。 – Whitecat

関連する問題