2013-03-27 25 views
8

Tamam, sonunda bcrypt'i, nasıl çalıştığını ve DB'de nasıl saklanacağını anladım, bu yüzden gitmek için neredeyse iyiyim. Sorun şu anda PHP 5.3 ile kullanmak için bcrypt hangi uygulama toplanıyor.PHP 5.3 için bcrypt'in hangi uygulaması önerilir?

Tüm farklı çözümlere bakarken çıldırıyorum ve hangisinin en çok önerilen ve en güvenli kullanım olduğundan emin değilim, bu yüzden bir kez daha size dönüyorum.

İşte buldum olanları şunlardır: Başka

1) https://gist.github.com/marcoarment/1053158

2) http://www.openwall.com/phpass/

3) https://stackoverflow.com/a/6337021/869849

4) ... şey?

Bunlar birbiriyle değiştirilebilir mi, yoksa farklı karma mı üretiyorlar? Bunların hepsinin "bcrypt" olduğu için aynı sonuçları vereceğini düşünmek isterim, fakat emin değilim (1) ve 2)'u test ettim ve 1) tarafından üretilen karmanın 2) üzerinde kontrol edilmesinden beri değiştirilebilirler).

PHP 5.3 için önerilen çözüm hangisidir?

+0

'bu değiştirilebilir mi, yoksa bu farklı karmaları üretmek do?' Neden onları yüklemek ve bunu denemiyorsunuz? – nickb

+0

En iyi çözüm: PHP 5.5 için yerleşik olan şifre kütüphanesini kullanmalısınız. PHP 5.3 ve 5.4 için geriye dönük uyumluluk sürümü yayınladılar. Bkz. [Burada] (https://github.com/ircmaxell/password_compat). Ancak, 5.3.7 veya daha yüksek bir değere ihtiyacınız olacağını unutmayın. 5.3.7'den önce bcrypt ile bir güvenlik sorunu vardı, bu da yeni kütüphanenin çalışmadığı anlamına geliyor. – Spudley

+0

@nickb: Daha genel olarak '1)' ve '2]' yi denediğimden ve yukarıda benim yazımda değindiğim gibi birbirleriyle değiştirilebiliyormuş gibi kastettim. – ProgrammerGirl

cevap

18

En iyi çözüm: PHP 5.5 için yerleşik olan parola kitaplığını kullanmalısınız. PHP 5.3 ve 5.4 için password_compat adı verilen bir geriye dönük uyumluluk sürümü yayınladılar. Ancak, 5.3.7 veya daha yüksek bir değere ihtiyacınız olacağını unutmayın. 5.3.7'den önce bcrypt ile bir güvenlik sorunu vardı, bu da yeni kütüphanenin çalışmadığı anlamına geliyor.

5.3.7'den önceki bir sürümdeyseniz, bir sonraki en iyi seçenek aynı yazar tarafından Password Lib olur. Ama PHP'yi yükseltmeyi öneririm, bunun yerine daha iyi bir seçenek olurdu.

Hem kütüphaneler sitenizin klasörüne kopyalayarak, indirerek ve kodunuzda ana dosyasını dahil ederek basitçe monte edilebilir takma - yani require('password.php');.

Composer ile yükleme, onu kullanıyorsanız da bir seçenektir.

$hash = password_hash($password, PASSWORD_BCRYPT); 

bir şifre doğrulamak için::

bir şifre oluşturmak için:

Kullanımı (eğer password_compat ile gidiyoruz varsayarsak)

if (password_verify($password, $hash)) { 
    /* Valid */ 
} else { 
    /* Invalid */ 
} 

Ve hepsi sizi temelde bilmem gerek. Kütüphane, şifrenizi, vb.

[DÜZENLEME] Eğer algoritma 'maliyet' değiştirmeniz gerekirse, yorumunuzla göre, o zaman bu gibi bunu belirtmek için password_hash() çağrısına ek bir parametre ekleyin:

password_hash($password, PASSWORD_BCRYPT, array("cost" => 11)); 

Tüm belgeler mevcuttur yukarida baglandigim indirme sayfasinda.

Password_compat kütüphanesinin kullanımıyla ilgili gerçekten iyi bir şey, PHP 5.5'te PHP'ye standart olarak yerleştirilmiş aynı API'ye ve işlevselliğe sahip olacak şekilde tasarlanmış olmasıdır. Bu nedenle, PHP 5.3 veya 5.4'teyken password_compat kullanırsanız, PHP 5.5'e geçtiğinizde, sisteminizde yeni yerleşik parola işlevlerini kullanmak için zaten doğru koda sahip olursunuz. Tek fark, kütüphaneye include'a ihtiyacınız olmayacak olmasıdır. PHP 5.5 güncellemeyi deneyin eğer

+0

Teşekkürler Spudley! Sonunda '5.5' PHP'ye yükseldiğimde ne yapmalıyım/değiştirmeliyim? – ProgrammerGirl

+2

@Programmer - Uyumluluk kütüphanesinin adıdır. Daha sonra PHP 5.5'e geçmeniz gerekiyorsa, 'require ('password.php')' yi kaldırabilirsiniz ve siz de iyi olmalısınız, PHP 5.5'teki fonksiyon aynı isme ve aynı parametrelere sahip olacaktır. – martinstoeckli

+0

@Programmer - Daha net hale getirmek için cevabı değiştirdim. :-) – Spudley

1

geçişten önce bu gözden geçirin bu kılavuzu

5.3'den 5.4'e değişiklikler ve serbest bırakma notları en geriye uyumsuzluk sayfa

vardır yükseltmeden önce okunması gereken çok ilginç noktaları vardır

http://php.net/manual/en/migration54.incompatible.php

+0

Bağlantılı sayfada 'password_hash() 'kullanımı ile ilgili herhangi bir etki yaratacak hiçbir şey bulamıyorum. – martinstoeckli

+0

@martinstoeckli hayır 'password_hash() ile ilgili değil, PHP 5.3.x'den 5.5 sürümüne yükseltmek için aynı problemim var ve bu sayfada yükseltmeyi okumak için PHP 5.5'e yükseltmek için bir çözümüm var. –

+0

Tamam, ama o zaman soruyla ne ilgisi var? – martinstoeckli

İlgili konular