Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php/MySql] Bezpieczeństwo skryptu
Forum PHP.pl > Forum > Przedszkole
Ciap-Ciak
Mam pewnie skrypt logowania. Chciałbym abyscie ocenili jego bezpieczoeństwo:
index.php
  1. <?php 
  2.  
  3.  
  4. include('includes/config.php');
  5.  
  6. mysql_connect($db_host,$db_user,$db_pass) or die ("Nie mogę nawiązać połączenia z bazą danych!");
  7. mysql_select_db($db_name);
  8.  
  9. if(empty($username) || empty($password))
  10. {
  11. echo("Zaloguj się:<br />");
  12. include("forms/login.php");
  13. echo("<br />Lub <a href=\"forms/register.php\">zarejestruj się</a>");
  14. echo("<br />Lub <a href=\"page1.php\">wejdz na podstrone nr1</a>");
  15. }
  16. else
  17. {
  18. #
  19. #Logowanie
  20. #
  21. $sql = "SELECT * FROM `v_users` WHERE `user_password`='".$password."' AND `user_username`='".$username."'";
  22. $results = mysql_query($sql);
  23.  
  24. if(mysql_num_rows($results))
  25. {
  26. $getid = "SELECT * FROM `v_users` WHERE `user_username`='".$username."' LIMIT 1";
  27. $getidexec = mysql_query($getid);
  28. while($r=mysql_fetch_array($getidexec)){
  29. $userid = $r[userid];
  30. }
  31. $_SESSION['logged']=1;
  32. }
  33. else
  34. {
  35. die("Nazwa użytkownia i/lub hasło są błędne!");
  36. }
  37. #
  38. #---------------------------------------------------------
  39. #
  40. }
  41.  
  42. if(isset( $_SESSION['logged'])) 
  43. { 
  44.  
  45. echo("Jestes zalogowany<br /><br />");
  46. echo("<br /><a href=\"page1.php\">wejdz naa podstrone nr1</a><br><br>");
  47.  
  48. #...
  49. #TRESCI DOSTEPNA PO ZALOGOWANIU
  50. #...
  51.  
  52. include("forms/logout.php");
  53. }
  54.  
  55. ?>


includes/config.php
  1. <?php
  2.  
  3. #Polaczenie z baza danych
  4. $db_host = "localhost";
  5. $db_user = "root";
  6. $db_pass = "";
  7. $db_name = "database";
  8.  
  9. #Login/Logout
  10. $username=$_POST['login'];
  11. $password=$_POST['pass'];
  12. $logout=$_POST['logout'];
  13.  
  14. $username=strip_tags($username);
  15. $password=strip_tags($password);
  16.  
  17. $username=str_replace(" ","",$username);
  18. $password=str_replace(" ","",$password);
  19.  
  20. $username=str_replace("%20","",$username);
  21. $password=str_replace("%20","",$password);
  22.  
  23. $username=addslashes($username);
  24. $password=addslashes($password);
  25.  
  26. $password=md5($password);
  27. ?>


Czy ten skrypt jest wystarczajaco bezpieczy czy moze powinenem w nim cos zmienic - dodac?
dyktek
troche duzo tego filtrowania, no i nie czyścisz tym wszystkiego
poczytaj troche tutaj
Ciap-Ciak
przeczytalem pierwsze 2 strony powyzeszego tematu i dowiedzialem sie tylko tego ze mysql_escape_string" title="Zobacz w manualu php" target="_manual jest w miare dobrym zabezpieczeniem a co do reszty "zabezpieczen" to jedni mowi ze warto a inni ze bezuzyteczne (i nie wiem wkoncu czy stosowac ktores z tych zabezpieczen) a wracajac do mysql_escape_string" title="Zobacz w manualu php" target="_manual. w MySql nie jestem zbyt obeznany. czytalem w manualu opis tej funnkcji ale nie zabardzo ja zrozumialem i nie bardzo tez wiem jak powinienem ja zastosowac do mojego kod.

btw. w tym linku czytalem ze poprzez $_GET[XXX] mozna wlamywac sie (poprzez wykonywanie zapytan sql), czy w metodzie $_POST[xxx] jest to tez mozliwe?
Master Miko
Oczywiście. Hacker tworzy formularz z $_POST....
mysql_escape_string została specjalnie stworzona do "wkładania" danych z POST i GET do bazy danych.

Tak jak napisałeś to jest dobre:

  1. <?php
  2.  
  3. $username=str_replace(" ","",$username);
  4. $password=str_replace(" ","",$password);
  5.  
  6. $username=str_replace("%20","",$username);
  7. $password=str_replace("%20","",$password);
  8.  
  9. ?>



Tak samo function.htmlspecialchars.php" title="Zobacz w manualu php" target="_manual zostało stworzone do wyświetlania na stronie wartości z formularzy.

PS. a to nie jest przypadkiem: mysql_real_escape_string" title="Zobacz w manualu php" target="_manual questionmark.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.