Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php/mysql] Zabezpieczenia przed SQL Injection
bangoo
post 19.04.2007, 19:54:42
Post #1





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 14.03.2007

Ostrzeżenie: (0%)
-----


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?


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
skowron-line
post 19.04.2007, 19:58:50
Post #2





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


http://forum.php.pl/index.php?showtopic=23...l=sql+injection

tu napewno znajdziesz odpowiedz na swoje pytanie i wiele innych


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
bangoo
post 19.04.2007, 20:36:55
Post #3





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 14.03.2007

Ostrzeżenie: (0%)
-----


Czytałem, ale chciałem się zapytać co sądzicie o tym rozwiązaniu bo jego tam nie podali.


--------------------
Go to the top of the page
+Quote Post
fridek
post 19.04.2007, 20:44:32
Post #4





Grupa: Zarejestrowani
Postów: 61
Pomógł: 0
Dołączył: 19.12.2006

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 08:32