Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php/mysql] Zabezpieczenia przed SQL Injection
Forum PHP.pl > Forum > Przedszkole
bangoo
Próbuję zabezpieczyć się przed SQL Injection. Próbuję zrobić to poprzez str_replace. Oto kod:
  1. <?php
  2. function LogIn($Nick,$EntrdPass){
  3.  
  4. global $Msg;
  5. $BadTags = array("/", "*", "OR", "%", "#");
  6. $Nick = str_replace($BadTags, "", $Nick);
  7. $EntrdPass = str_replace($BadTags, "", $EntrdPass);
  8.  
  9. $Query = "SELECT * FROM Users WHERE nick ='".$Nick."'";
  10.  
  11. $Torow = mysql_query($Query) or die(mysql_error());
  12.  
  13. while($row = mysql_fetch_assoc($Torow)){
  14.  
  15.  $UserInfo = $row;
  16. unset($row);
  17.  
  18. }
  19.  
  20. $EntrdPass = md5($EntrdPass);
  21.  
  22. if($EntrdPass == $UserInfo['password']){
  23.  
  24. $QueryRank = "SELECT * FROM UsersRank WHERE id ='".$UserInfo['rank']."'";
  25.  
  26. $TorowRank = mysql_query($QueryRank) or die(mysql_error());
  27.  
  28. while($row = mysql_fetch_assoc($TorowRank)){  
  29.  
  30. $RankInfo = $row;
  31. unset($row);
  32.  
  33. }
  34. $_SESSION['user'] = $UserInfo;
  35. $_SESSION['rank'] = $RankInfo;
  36.  
  37. $Msg = 1;
  38.  
  39. echo "<pre>";
  40. print_r($_SESSION);
  41. echo "</pre>";
  42. echo $_SESSION['user']['id'];
  43.  
  44. AddLog("Uzytkownik ".$Nick." zalogowal sie.");
  45.  
  46. }
  47.  
  48. else{
  49.  
  50. $Msg = 0;
  51.  
  52. }
  53. ?>

Czy jest to dobre rozwiązanie i czy jestem już bezpieczny?
skowron-line
http://forum.php.pl/index.php?showtopic=23...l=sql+injection

tu napewno znajdziesz odpowiedz na swoje pytanie i wiele innych
bangoo
Czytałem, ale chciałem się zapytać co sądzicie o tym rozwiązaniu bo jego tam nie podali.
fridek
Nie rozumiem czemu nie używasz na haśle i loginie mysql_real_escape_string. Możnaby też ewentualnie sprawdzać ich długość (nie wiem, czy SQLowi można zrobić przepełnienie bufora?).
Twoja metoda jest ok, ale np. nie sprawdzasz czy ciąg nie zawiera ' albo ", a to chyba podstawa. Nie wynajduj po raz kolejny koła, uzyj wbudowanej funkcji.
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.