Ben şifre alma belirteçleri oluşturmada tuz olarak kullanılmak üzere bir site çapında karma oluşturmak istiyoruz. Bunu yapmak için en iyi yol bir anlamda almaya çalışırken stackoverflow etrafında zıplatma edilmiştir.
İşte sıfırlama süreç:
Bir kullanıcı bir parola sıfırlama e-posta istediğinde kodu alma belirteci oluşturur:
$token = hash_hmac('sha256', $reset_hash* , $site_hash)
* $ Reset_hash karma kullanıcı tabloda kaydedilen phpass HashPassword () fonksiyonu kullanılarak oluşturulan olduğunu.
Daha sonra kullanıcıların e-posta adresine bir URL belirteci gönderin. Onlar bir saat içinde belirteç kez önce tıklatın. Ben bir meydan okuma belirteç oluşturulan sunucu tarafı ile onların teslim maç. Bu maçlar, o zaman yeni bir parola seçmek zorunda, ve sonra giriş.
Ben $ site_key oluşturmak için en iyi yolu bilmek istiyorum. Ben rasgele sayılar tarafından seribaşı olduğunu başka hmac hash kullanarak düşünüyorum:
$site_key = hash_hmac('sha256', MCRYPT_DEV_RANDOM, MCRYPT_DEV_RANDOM);
Bu böyle bir şey üretir:
98bb403abbe62f5552f03494126a732c3be69b41401673b08cbfefa46d9e8999
Bu, bu amaçla kullanılacak uygun bir rasgele olabilir mi? Ben bu overcomplicating veya yanlış şekilde yaklaşıyor muyum?
I was inspired to use HMAC by this answer
EDIT: benim arkadaşları bazı çağırdı 'gizli soru' adımı önlemek için çalışıyorum, bu yüzden parola sıfırlama için bir tek adım sağlamak için sıfırlama linki istiyorum. Bu nedenle, benim endişem, bu süreç hassas bilgiler içeren bir sistemi korumak için yeteri kadar güvenli olduğunu.
RESOLVED, for now: Ben sıfırlama belirteci olarak Rook tarafından açıklandığı gibi bir seferlik ile gitmek için gidiyorum. Teşekkürler yorum ve geribildirim için herkes.