Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PDO + password_verify -> Czy to bezpieczne?
Forum PHP.pl > Forum > PHP
Panicz74
Witam,

Stworzyłem skrypt rejestracji z hashowaniem hasła password_hash(). Pod spodem jest skrypt logowania. Jednakże teraz nie mogę zrobić bindValue na zmiennej $password. Czy taki kod jest bezpieczny? Jak się to ma do SQL Injection?

  1. if(isset($_POST['submit']))
  2. {
  3. $login = trim($_POST['login']);
  4. $password = trim($_POST['password']);
  5. try
  6. {
  7. $pdo = new PDO($pol, $user, $pass);
  8. $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  9.  
  10. $stmt = $pdo->prepare('SELECT * FROM users WHERE login = :login');
  11. $stmt -> bindValue(':login', $login, PDO::PARAM_STR);
  12. //$stmt -> bindValue(':password', $pass_hash, PDO::PARAM_STR);
  13. $stmt -> execute();
  14. //print_r($_POST);
  15. $row = $stmt->fetch(PDO::FETCH_OBJ);
  16. //print_r($row);
  17. $pass = $row->password;
  18. $usr = $row->login;
  19. //print_r($pass); echo '<br/>'; print_r($usr); echo '<br/>';
  20. if(password_verify($password, $pass) && $login === $usr)
  21. {
  22. echo "Witaj ".$login;
  23. $_SESSION['logged'] = true;
  24. $_SESSION['login'] = $login;
  25. }
  26. else
  27. {
  28. echo "Podano nieprawidłowe dane";
  29. }
  30. $stmt->closeCursor();
  31. }
  32. catch(PDOException $e)
  33. {
  34. echo 'Połączenie nie mogło zostać utworzone: ' . $e->getMessage();
  35. }
  36. }
redeemer
SQL injection tu nie ma bo prawidłowo korzystasz z PDO i bindujesz parametry. $login === $usr ten warunek w 20 linii jest zbędny. trim($_POST['password']) - a jak mam spacje w haśle na początku albo na końcu?
Cytat
... Jednakże teraz nie mogę zrobić bindValue na zmiennej $password ...
Nie rozumiem.
com
bo robisz na $pass_hash, który nie istnieje, poza tym session_start(); daje sie na samym początku a nie w tym miejscu wink.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.