2012-07-30 7 views
6

通常の選択操作の場合、検索は大文字小文字を区別しません。 だからSELECT * FROM tbl WHERE name = aBcまた、値ABC、ABC、ABCで名前を検討するなどMYSQLで大文字と小文字を区別しない場合は、ログインのパスワードフィールドでどのように動作しますか?

が、ログイン機能の場合には、我々はちょうど SELECT * FROM tbl WHERE password = aBc は大文字と小文字を区別することのみABC値とパスワードを検討していく行います。これは私が私の検索でこのことについて何かを見つけdidntの?起こるんどのように

ご注意ください。

Thanxすべて。

+0

パスワードをハッシュとして保存しても問題ありません。そしてそれがあなたがそれをどうするべきかです。 –

+0

パスワードを平文として保存しますか? ...それは良かった – Zaffy

+0

いいえ@quarry私はちょうどそれがどのように機能するのだろうかと思っていませんでしたか? –

答えて

5

私はそれがカラムの照合に依存していると思います。utf8_general_ciの末尾の大文字小文字を区別しないのは、utf8_general_ciです。

大文字と小文字を区別するパスワードは、MD5またはPASSWORD機能を使用して暗号化された形式でパスワードを保存する場合にのみ機能します。

show variables like '%collation%'; 
+---------------------------+-------------------+ 
| Variable_name    | Value    | 
+---------------------------+-------------------+ 
| collation_connection  | latin1_swedish_ci | 
| collation_database  | utf8_general_ci | 
| collation_server   | latin1_swedish_ci | 
+---------------------------+-------------------+ 
+0

でも、暗号化されたパスワードをハッシュに変換しなくても、大文字と小文字が区別されます。 –

+0

Thanx @Omesh私はそれをとてもうまく説明し、私のテストケースに合っていると思います。 –

+0

あなたは大歓迎です! :) – Omesh

1

は、私はあなたがテキストとしてデータベースにパスワードを保存しているがあれば、あなたの正確な質問への答えが何であるかわからないんだけど、それは非常に悪い考えです。あなたが代わりにすべきことは、登録時にパスワードをハッシュして、その形式でデータベースに保存することです。ユーザーがログインしようとするたびに、提出されたパスワードを再ハッシュして、一致するユーザー名で行に格納されているハッシュと比較します。ハッシュは大文字と小文字が区別されるため、必要なレベルのセキュリティを追加しながら問題を解決します。問題が生じないように、多くの実装パスワードやそのハッシュで

1

は、アプリケーションサーバーで比較されています。大文字と小文字を区別用の

1

(BINARY)=が "ユーザからユーザ名= '$ユーザ名' * SELECT

SELECT * TBL FROM BINARYパスワード= ABC

+0

それは正しいが、それは私の質問thanx @KSAではなかった。 –

3

$ sqlをAND BINARY password = '$ password' ";