Witajcie,

Przeglądałem przez ostatnie dni Internet i forum.php.pl w poszukiwaniu informacji odnośnie bezpieczeństwa skryptów. Często pojawiały się pojęcia filtrowania danych i haszowania i dlatego zastosowałem je dla wstępnego logowania. Nie wiem tylko, czy dobrze i czy cokolwiek te modyfikacje pomogą.

Chciałbym, aby ktoś z Was, o wiele większym doświadczeniu w pisaniu bezpiecznych skryptów, sprawdził go pod kątem potencjalnych ataków i napisał co ewentualnie mógłbym wprowadzić dla zwiększenia odporności. Z góry dziękuję za sugestie.

loguj.html
  1. <div id="logowanie">
  2. <div><h1>Logowanie</h1></div>
  3. <form method="post" action="weryfikacja.php">
  4. <div class="lewa">Login <input type="text" name="login" /></div>
  5. <div class="lewa">Hasło I<input type="password" name="haslo" /></div>
  6. <div class="lewa">Kiedy się urodziłeś?<input type="password" name="haslo2" /></div>
  7. <div><input type="submit" name="submit" value="loguj" class="potwierdz" /></div>
  8. </form>
  9. </div>



weryfikacja.php
  1. <?php
  2. $logint = $_POST['login'];
  3. $haslot = $_POST['haslo'];
  4. $haslost2 = $_POST['haslo2'];
  5. $SUBMIT = $_POST['submit'];
  6.  
  7. if ($SUBMIT && $logint != '' && $haslot != '' && $haslost2 != '')
  8. {
  9. $log = htmlspecialchars($logint);
  10. $has = htmlspecialchars($haslot);
  11. $has2 = htmlspecialchars($haslost2);
  12.  
  13. $haslorob = "haslot_-_$haslot-_-$haslost2";
  14. $hasz = sha1($haslorob);
  15.  
  16. $sql="SELECT login_redakcja, uprawnienia_redakcja, status_redakcja, haslo_redakcj
    a, haslo2_redakcja FROM redakcja WHERE login_redakcja = '$log' "
    ; 
  17. $result = mysql_query ($sql) 
  18.  or die ("błąd zapytania "); 
  19. $row = mysql_fetch_array ($result);
  20.  
  21. $logins = $row['login_redakcja'];
  22. $haslos = $row['haslo_redakcja'];
  23. $haslos2 = $row['haslo2_redakcja'];
  24.  
  25. $haslorob2 = "haslot_-_$haslos-_-$haslos2";
  26. $hasz2 = sha1($haslorob2);
  27.  
  28.  
  29. if ($hasz == $hasz2)
  30. {
  31. $_SESSION['id_admin'] = $row['id_admin'];
  32. $_SESSION['login_admin'] = $row['login_admin'];
  33. $_SESSION['haslo_admin'] = $hasz2;
  34.  
  35. $godzina = date ("H:i");
  36. $data = date("Y-m-d");
  37.  
  38. mysql_query("UPDATE redakcja SET
  39. logowanie_redakcja = '$godzina'
  40. , data_redakcja = '$data'
  41. WHERE id_redakcja = ".$_SESSION['id_admin']." LIMIT 1 ");
  42.  
  43. header("Location: panel.php");
  44.  
  45. }
  46.  
  47. else {echo "Spróbuj ponownie";}
  48.  
  49. }
  50.  
  51. else
  52. {echo "Uzupełnij wszystnie dane";}
  53. ?>