Veritabanları ve Cookies Şifreleri (PHP / MySQL) Mağaza nasıl

2 Cevap php

this article ve nasıl veritabanları ve kurabiye not deposu şifreleri, ben şimdi merak ediyorum orada diğerleri üzerinden okumak zorunda how bunu yapmalıyım ...

Ben (biraz etrafında okuduktan sonra) kadar geldim ne (sayfa non-unicode olduğu, 64 byte => 64 karakter) o 512 bit doldurur kadar tuz ile doldurup, düz metin kullanıcı şifresi alıyor ve daha sonra yaparak

$pwhash = hash('sha512', $saltedpw);
for ($i=0; $i<1000; $i++)
      $pwhash = hash('sha512', $pwhash);

Sonra veritabanında (UserName, HashedPw, Tuz) saklamak istiyorsunuz, ama ben çerez (seanstan sonra loogend-kalmak isteyen kullanıcıları tanımlamak için süresi doldu) hakkında ne yapmalıyım?

2 Cevap

İlk olarak, hash 1000 kez arayarak kez yeterli olduğunu, hiçbir işe yaramaz.

Çerez kullanıcı giriş hatırlamak için iki seçeneğiniz var:

  1. Söylendiği gibi, rastgele bir belirteç oluşturmak ve bu kullanıcı bilgileri ile birlikte veritabanında depolamak. Hiçbir oturum çerezi olan bir kullanıcı siteyi girdiğinde, belirteci ile bir çerez varsa kontrol ve DB arama yapmak. Eğer böyle bir belirteç ile bir kullanıcı buldum eğer mevcut IP onlar ilk oturum IP olarak aynı olup olmadığını gibi bazı ek kontroller yapmak isteyebilirsiniz içeri, bunları oturum
  2. Siz çerez kullanıcı kimliğini saklayabilir, ama sonra kullanıcı sadece onu değiştiremezsiniz emin olmak için gizli bir anahtar kullanarak verileri imzalamak zorunda. HMAC-SHA-1 bunu yapmak için iyi bir yoldur. Avantajı veritabanındaki herhangi bir ek veri depolamak zorunda kalmamasıdır. Yalnızca imzasını doğrulamak ve kullanıcı kimliği üzerinde arama yapmak zorunda. Dezavantajı (HMAC-SHA-1 uzun bir gizli anahtar ile bu yapmalıyım) imza kodu güvenli olduğundan emin olmak zorunda olmasıdır.

Siz çerez kullanıcının şifre saklamak zorunda değilsiniz. Eğer veritabanında ve çerez saklamak (bir oturum kimliği benzer) uzun bir rasgele bir dize üretebilirsiniz. Sen her oturum süresi ve kullanıcı geri geliyor bu dizeyi değiştirebilirsiniz. Bir kullanıcı sitesine eriştiğinde size veritabanına karşı çerez değerini kontrol ve kullanıcı kim olduğunu görebilirsiniz.