(PHP 5 >= 5.6.0, PHP 7, PHP 8)
hash_equals — Zamanlama saldırısı güvenli dize karşılaştırması
$bilinen_dzg
, string $kullanıcı_dzg
): bool
İki dizgenin uzunluklarını aynı zamanı kullanarak karşılaştırır.
Uzunluklar farklıysa hemen false
döner.
Bu işlev, zamanlama saldırılarını azaltmak için kullanılmalıdır; Örneğin, crypt() parola aşlarını denerken.
bilinen_dzg
Karşılaştırılacak dizge
kullanıcı_dzg
Kullanıcının sağladığı dizge
İki dizge benzerse true
yoksa false
döner.
Örnek 1 - hash_equals() örneği
<?php
$umulan = crypt('12345', '$2a$07$usesomesillystringforsalt$');
$dogru = crypt('12345', '$2a$07$usesomesillystringforsalt$');
$yanlis = crypt('apple', '$2a$07$usesomesillystringforsalt$');
var_dump(hash_equals($umulan, $dogru));
var_dump(hash_equals($umulan, $yanlis));
?>
Yukarıdaki örneğin çıktısı:
bool(true) bool(false)
Bilginize:
Başarılı bir karşılaştırma için verilen dizgeler eşit uzunlukta olmalıdır. Uzunluklar farklıysa hemen
false
döner. Zamanlama saldırısı durumunda bilinen dizgenin uzunluğu değişebilir.
Bilginize:
Kullanıcını sağladığı dizgeyi ilk değil ikinci bağımsız değişkende belirtmek önemlidir.