2011-12-12 17 views
8

Kullanıcı girişi var ama kullanıcı büyük/küçük harfe duyarlı bir şekilde giriş yapabilir. Eğer şifreniz 'test' ise o zaman kullanıcı 'TEST' şifresiyle giriş yapabilir.
Parola alanımda bu tür kimlik doğrulamasını önlemek istiyorum. saklamak eğerMySQL şifre alanı için büyük/küçük harfe duyarlı alan nasıl kullanılır?

Ayrıca bu kullanabilirsiniz:

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

VEYA

PHP kodunda strcmp kullanın:

cevap

13

en kolay yolu sorgu kullanımda binary anahtar kelime kullanmaktır tavsiye ettiğim karma veya şifreli bir şifre.

5

Parolaları açık bir şekilde depoladığınız sanırım. Bu sadece güvensiz değil, aynı zamanda çoğu durumda da gereksiz. Benim tavsiyem, örneğin iki sütunda şifreleri saklamaktır:

password_salt VARCHAR(16) 
password_hash VARCHAR(40) 

yeni bir şifre saklamadan önce, kullanıcının ($clear_password) tarafından sağlanan şifre rastgele bir dize ($salt) oluşturmak alıp bir karma oluşturmak için ikisini de kullanmak (sha1sum($salt . $clear_password). Hem tuzu hem de hastayı saklayın ve şifreyi temizleyin.

Parolayı doğrulamak için, verilen kullanıcı için depolanmış tuzu alın, karma değerini oluşturun ve DB'deki karma ile eşleşip eşleşmediğine bakın.

Bu teknik salted passwords olarak adlandırılır.

+0

Yanıtınız için teşekkürler güvenlik riski için iyi bir fikir – SKu

+1

@SKu Lütfen bunu okuyun - http://codahale.com/how-to-safely-store-a-password/. Sha1 kullanmak yeterli değildir. Güvenlik için –

+0

iyi ama soru ile hiçbir şey yapmak zorunda değil mi? – joel

İlgili konular