2015-07-20 16 views
8

Aşağıdaki gibi unicode karakterleri olan password_hash güvenli kullanım mı yoksa uyumsuzluk sorunları var mı?Unicode karakterlerle password_hash kullanmak güvenli midir?

<?php 
$hash = password_hash("漢字", PASSWORD_DEFAULT); 
?> 
+4

Karmaşık karakterler, karakterlere karşı değil, baytlara karşı çalışır; Çok güvenli ve uyumsuzluk sorunları –

+0

@MarkBaker çok teşekkür ederim. – user5115459

+0

@MarkBaker, yorumunuzu o zaman bir yanıt haline getirebilir. – domsson

cevap

3

Karma algoritmaların kendileri bayt üzerinde çalışırlar, bu yüzden Mark'ın yorumladığı gibi unicode güvenlidirler. Tek sorun, PHP'nin unicode dizeleriyle ilgilenmesi, yani binary-safe parola düzeltme işlevleri midir? Bunu test ve öğrenelim:

<?php 

$pass = 0; 
$fail = 0; 

# Generate 100 random unicode passwords 
for ($i = 0; $i < 100; $i++) { 
    $password = ''; 
    for ($p = 0; $p < 10; $p++) { 
     $password .= mt_rand(0xa1, 0xffff); 
    } 

    # Test password hashing 
    $hash = password_hash($password, PASSWORD_DEFAULT); 
    if (password_verify($password, $hash)) { 
     $pass++; 
    } else { 
     $fail++; 
    } 
} 

echo "Pass: $pass\nFail: $fail\n"; 

Sonuç: sorunuzun

Pass: 100 
Fail: 0 

cevap evet, bu güvenli olmasıdır.

İlgili konular