Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Logowanie i rejestracja....zabezpieczenie
Forum PHP.pl > Forum > Przedszkole
king
Witam!
Przeczytalem caly temat o obronie przed sql injection, ale jest tak zasmiecony ze malo co sie dowiedzialem i nie wiem nadal jak zabezpieczyc moj skrypt...
Czy moglby mi ktos podpowiedziec co mam zrobic, aby moje skrypty byly w miare bezpieczne?
Co myslicie o tym skrypcie http://hacking.pl/5845?

logowanie
  1. <?php
  2. //inkluduje plik do bazy
  3.  
  4. require_once('config/conf.php');
  5.  
  6.  
  7. //Laczenie z baza
  8. $dbc = @mysql_connect ($dbhost, $dbuser, $dbpass) or die ('Nie 
  9. moge połączyć sie z bazą danych. Przepraszamy z kłopoty');
  10. mysql_select_db ($dbname) or die ('Problemy z baza danych. 
  11. Przepraszamy z kłopoty');
  12.  
  13. //znalazlem taka funkcje
  14. function usun($data){
  15.  
  16. GLOBAL $dbc;
  17. if (ini_get('magic_quotes_gpc')){
  18. $data = stripslashes($data);
  19. }
  20.  return mysql_real_escape_string($data, $dbc);
  21. }
  22. ?>
  23.  
  24. <html>
  25. <head>
  26. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
  27. <title>Logowanie</title>
  28. </head>
  29.  
  30.  
  31.  
  32. <form method="post" action="logowanie.php">
  33. <input type="text" name="login" /><br>
  34. <input type="password" name="haslo" /><br>
  35. <input type="submit" name="submit" value="zaloguj sie" />
  36. </form>
  37.  
  38.  
  39. <?php
  40.  
  41. $login=$_POST['login'];
  42. $haslo=$_POST['haslo'];
  43.  
  44. if (isset($_POST['submit'])){
  45. if (empty ($_POST ['login']))
  46. {
  47. $message = 'Nie podales loginu.';
  48. $login = FALSE;
  49. echo $message;
  50. }
  51. else{
  52. $login = usun($_POST['login']);
  53. }
  54. if (empty ($_POST ['password']))
  55. {
  56. $message = 'Nie podales hasla.';
  57. $password = FALSE;
  58. echo $message;
  59. }
  60. else{
  61. $password = usun($_POST['login']);
  62. }
  63. // sprawdza czy jest login i haslo 
  64. if (isset($_POST['login']) && isset($_POST['haslo'])){
  65. $login = trim($_POST['login']); // z loginu usuwamy spacje
  66. $haslo = md5($_POST['haslo']); //hasło kodujemy w MD5
  67. $loguj = mysql_query ("select login,haslo from users where login='$login' and haslo='$haslo'");//pobranie z bazy loginu i hasła wpisanego w formularzu
  68. if(mysql_num_rows($loguj)==0)// sprawdzenie czy dany użytkownik istnieje w bazie 
  69. {
  70.  echo'<center> Podany login i haslo jest błędne</center>'; // jeżeli nie istnieje taki użytkownik to wyświetla błąd
  71.  exit;
  72. }
  73. else
  74. {
  75.  $_SESSION['zalogowany'] = $_POST['login']; // jeżeli istnieje taki użytkownik w bazie
  76.  Header('location: index.php');//To go przenosi
  77.  exit;
  78. }
  79. }
  80. }
  81. ?>



rejestracja
  1. <?php
  2. if (isset($_POST['submit'])){
  3. require_once('config/conf1.php');
  4.  
  5.  
  6. if ( eregi("^[[:alpha:]._]{4,15}$", stripslashes(trim($_POST['login'])))){
  7.  $login = usun($_POST['login']);
  8. }else{
  9. $login = FALSE;
  10. $message .= '<font color="red">Proszę podać poprawny login bez cyfr!</font><br />'; // LOGIN..... PROSZE PODAC IMIE
  11. }
  12.  
  13.  
  14.  
  15. if ( eregi ("^[[:alnum:]][a-z0-9_.-]*@[a-z0-9.-]+.[a-z]{2,4}$", stripslashes(trim($_POST['email'])))){
  16. $email = usun($_POST['email']);
  17. }else{
  18. $email = FALSE;
  19. $message .= '<font color="red">Proszę poprawny podać email!!!</font><br />'; // EMAIL.... PODAC TO PROSZE
  20. }
  21.  
  22.  
  23. if ( eregi("^[[:alpha:]]{4,20}$", stripslashes(trim($_POST['pass'])))){
  24. if($_POST['pass'] == $_POST['pass2']){
  25. $haslo = usun($_POST['pass']);
  26. }else{
  27. $message .= '<font color="red">Podane hasła różnią się od siebie</font><br />';
  28. }
  29. }else{
  30. $message .= '<font color="red">Prosze podać hasło</font><br />';
  31. }
  32.  
  33.  
  34. if ( $login && $email && $haslo ){
  35.  
  36. $query = "SELECT user_id FROM users WHERE login='$login'";
  37. $result = @mysql_query($query);
  38.  
  39. // sprawdzanie czy takie konto istnienie
  40. if ( mysql_num_rows($result) == 0){ // jezeli nie istnieje
  41.  
  42.  
  43.  
  44. //dodajemy uzytkownika do bazy
  45. $query2 = "INSERT INTO users (login, email, haslo, data_rejestracji) VALUES ('$login', '$email', md5('$haslo'), NOW())";
  46. $result2 = @mysql_query($query2);
  47.  
  48. if ($result2){ //jezeli nie wystapily zadne bledy
  49. echo 'Zostałes zarejestrowany na stronie'; 
  50. }else{
  51. echo 'Ze względu na wystąpienie błędu systemowego rejestracja nie była możliwa. Przepr
    aszamy za wszelkie niedogodnościi.<br />'
    ;
  52. }
  53. }else{
  54. $message .= '<font color="red">Konto o podanym nicku juz istnieje</font><br />';
  55. }
  56.  
  57. }else{
  58. $message .= '<font color="red">Spróbuj ponownie</font><br />';
  59. }
  60. }
  61. ?>

prosze o pomoc
Mlodycompany
wystarczy ze przy loginie i hasle dasz addslashes($zmienna); można tam jeszcze jakieś inne ceregiele i o nich masz w temacie o SQJ INJECT
king
ok dzieki.....smile.gif przeczytam jeszcze raz temat i poszukam na google, mysle ze dam rade sobie to zabezpieczyc..smile.gif
mkdes
Napisałem kiedyś kod do czyszczenia zmiennych POST i GET.
http://forum.php.pl/index.php?showtopic=75264&hl=
king
Napisze tu moj drugi problem
otoz nie wiem jak wyswietlic dane z bazy..... tzn....

mam np kod:

LINK
LINK2
LINK3
LINK4

i chcialbym aby po nacisnieciu ktoregos z tych linkow pobieralo dane z bazy..... moze mi ktos wytlumaczyc i napisac prosty skrypt lub dac linka do takiego tutoriala....

chodzi mi o cos takiego, ze skrypt pobiera dane np z id=1 w linku 1, i id=2 z linku 2,



edit

znalazlem to w necie, tylko nie wiem jak to zamiescic u mnie....
  1. <?
  2. $result1 = mysql_query("select * from dane WHERE id = '".$_GET['id']."'");
  3. $row1 = mysql_fetch_array($result1);
  4. ?>


o cos takiego mi chodzi ze jak nacisne LINK to pobiera dane gdzie id=1, i zapisuje to w zmiennej:)...... nie wiem jak skonstruowac ten link smile.gif
.radex
Cytat(king @ 17.08.2008, 11:32:47 ) *
znalazlem to w necie, tylko nie wiem jak to zamiescic u mnie....
  1. <?
  2. $result1 = mysql_query("select * from dane WHERE id = '".$_GET['id']."'");
  3. $row1 = mysql_fetch_array($result1);
  4. ?>


o cos takiego mi chodzi ze jak nacisne LINK to pobiera dane gdzie id=1, i zapisuje to w zmiennej:)...... nie wiem jak skonstruowac ten link smile.gif


1. link powinien wyglądać tak:

strona.pl/strona.php?id=1

2. zapytanie jest podatne na sql injection, powinno być:

$result1 = mysql_query("select * from dane WHERE id = '".intval($_GET['id'])."'");
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.