2011-12-12 15 views

答えて

13

最も簡単な方法は、クエリの使用中binaryキーワードを使用することです:

SELECT /*fields*/ FROM table WHERE /* where clause */ BINARY password = "userpassword" 

OR

は、あなたのPHPコードでstrcmpを使用します。

あなたが保存している場合にもこれを使用することができます私が推奨する暗号化されたハッシュまたは暗号化されたパスワード。

5

パスワードをクリアに保存していると思います。それは非常に安全ではないだけでなく、ほとんどの状況では不要です。私のアドバイスは、例えば、2列にパスワードを保存することです。

password_salt VARCHAR(16) 
password_hash VARCHAR(40) 

新しいパスワードを保存する前に、ユーザー($clear_password)によって提供されたパスワード、ランダムな文字列($salt)を作成を取り、ハッシュを作成するために両方を使用(sha1sum($salt . $clear_password)。 saltとhashの両方を保存し、クリアパスワードを破棄します。

パスワードを検証するには、指定されたユーザーのストアド・ソルトを取得し、ハッシュを生成し、DB内のハッシュと一致するかどうかを確認します。

このテクニックはsalted passwordsと呼ばれます。

+0

セキュリティリスクについてのご意見ありがとうございました – SKu

+1

@SKuこちらを最初にお読みください - http://codahale.com/how-to-safely-store-a-password/ sha1を使用するだけでは不十分です。 –

+0

セキュリティには良いですが、質問noで何もする必要はありませんか? – joel

関連する問題