Mam BARDZO małą witrynę, a ostatnio próbowałem ją zwiększyć, użyłem do przechowywania moich haseł w postaci zwykłego tekstu.Zwiększenie bezpieczeństwa mojej witryny. Czy używam hasła password_hash?
myślę, robię to dobrze, ale jako „hobby” programista chcę upewnić się, więc proszę was, specjalistów
Gdy użytkownik zarejestrować zrobić: password_hash($their_password, PASSWORD_DEFAULT)
i zapisać, że w „Hasło” kolumny w tabeli użytkowników. Używam PASSWORD_DEFAULT
, ponieważ wydaje się to najlepsze według php.net. .
Zauważ, że stała ta ma na celu zmieniać w czasie, co nowe i mocniejsze algorytmy są dodawane do PHP”
Brzmi dobrze
a część login (bardzo prosty):
if (count($_POST) > 0) {
$username = trim($_POST['username']);
$password = trim($_POST['password']);
$query = $db->prepare("SELECT password FROM users WHERE username = ?");
$query->execute(array($username));
$row = $query->fetch();
if (password_verify($password, $row['password'])) {
echo "Correct password";
// create session...
} else {
// wrong password
}
Może powinienem sprawdzić, czy nazwa użytkownika istnieje pierwszy, ale inne niż to, co o tym sądzisz?
Wygląda dobrze .. Jest to sposób na użycie password_hash \ verify. Ważne jest, aby wiedzieć, że algorytm, którego używasz, nazywa się bcrypt, co jest zalecane. Polecam użyć kolumny mysql jako BINARY (60) do zapisywania pamięci, –
Wygląda dobrze dla mnie. Osobiście umieszczę część zapytania w innej części kodu (może owinąć ją w klasę). – Bono
Głosuję, aby zamknąć to pytanie jako nie na temat, ponieważ jest to dobre dopasowanie do http://codereview.stackexchange.com, nie tyle SO. – deceze