Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][MySQL][PHP] Zabezpieczenie PA czy wystarczy?
Forum PHP.pl > Forum > Przedszkole
lukaszk
Witam, proszę o informację czy taki system logowania
  1. <?php
  2.  
  3. $message=""; //wiadomość
  4.  
  5. $login=$_POST['login'];
  6. if($login){
  7. $uzytkownik=trim($_POST['uzytkownik']);
  8. $md5_haslo= trim(sha1(md5($_POST['haslo'])));
  9.  
  10.  
  11. //połączenie z bazą danych
  12. include "page/db.php";
  13.  
  14. $rezultat = mysql_query("SELECT * FROM admin WHERE login_admin='$uzytkownik' AND haslo_admin='$md5_haslo'");
  15. $rekord = mysql_fetch_array($rezultat);
  16. $imie = $rekord[name];
  17. $nazwisko = $rekord[usernazwisko];
  18. // $firma = $rekord[firma];
  19.  
  20. if(@mysql_num_rows($rezultat)){
  21. session_register("uzytkownik");
  22. session_register("usernazwisko");
  23. //session_register("firma");
  24.  
  25. header("location:index.php");
  26. }else{
  27. $message="Nieprawidłowa nazwa użytkownika lub hasło";
  28. }
  29. }
  30. ?>


i taka zawartość w pliku głównym
  1. <?php
  2. setcookie ("uzytkownik", "", time() - 36);
  3. if(!session_is_registered("uzytkownik")){
  4. header('Location: logowanie.php');
  5. }
  6.  
  7. ?>
  8.  
  9.  
  10.  


Wystarczy do zabezpieczenia PA? jeśli macie inne ciekawsze i bezpieczniejsze propozycję proszę o pomoc
Pozdrawiam

nalazłem również ciekawy kod który zabezpiecza identyfikuje czy dane pochodzą z odpowiedniego formularza.
Ale nie wiem jak go wprowadzić
  1.  
  2. // umieszczamy zaraz po session_start();
  3.  
  4. if (!isset($_SESSION['token']))
  5. {
  6. $_SESSION['token'] = sha1(uniqid(rand(), true));
  7. }
  8.  
  9. // użycie:
  10.  
  11. if (warunek1 && check()==true)
  12. {}
  13.  
  14. function check ()
  15. {
  16. if ($_POST['token']!=$_SESSION['token'])
  17. die('hack');
  18. else
  19. return true;
  20. }


CuteOne
Brak jakichkolwiek zabezpieczen - każdy może wstawić zamiast nazwy użytkownika kod sql [poczytaj o sql injection]

Nie używa się już session_register() tylko $_SESSION['uzytkownik'] = 'jakas_wartosc';

Co to questionmark.gif



edit: jezeli nie wiesz jak coś działa to zacznij o tym czytać a nie czekasz aż ktoś ci to wytłumaczy/da przykład
kalmaceta
po 1. o sql injection nie czytałeś jak mniemam, brakuje ot choćby mysql_real_escap()
po 2. sha256 + salt zamiast tego potworka
lukaszk
Mam po poprawkach smile.gif i jak ?

  1. <?php
  2. // session_destroy();
  3. if($_GET['logout'] == "true" && ((int)$_GET['a']==1) && ($_SESSION["uzytkownik"]=='admin'))
  4. {
  5. echo '<p class="message message-success canhide"><b>Zostales prawidłowo wylogowany <img title="zamknij" width="25px;" align="right" src="images/delete.png"></b></p>';
  6. }
  7.  
  8. $login= htmlspecialchars($_POST['login']);
  9.  
  10.  
  11.  
  12. if(isset($_POST['login'])){
  13. $uzytkownik= htmlspecialchars (trim($_POST['uzytkownik']));
  14. $md5_haslo= trim(sha1(md5($_POST['haslo'])));
  15.  
  16.  
  17. //połączenie z bazą danych
  18. include "page/db.php";
  19.  
  20. $rezultat = mysql_query("SELECT * FROM admin WHERE login_admin='$uzytkownik' AND haslo_admin='$md5_haslo'");
  21. $rekord = mysql_fetch_array($rezultat);
  22. $imie = $rekord[name];
  23. $nazwisko = $rekord[usernazwisko];
  24. // $firma = $rekord[firma];
  25.  
  26. if(@mysql_num_rows($rezultat)){
  27. $_SESSION["uzytkownik"];
  28. $_SESSION["name"];
  29. $_SESSION["usernazwisko"];
  30. //session_register("firma");
  31.  
  32. header("location:index.php");
  33. }else{
  34. $message="Nieprawidłowa nazwa użytkownika lub hasło";
  35. }
  36. }
  37. ?>
Mephistofeles
Źle. Wielokrotne hashowanie zwiększa prawdopodobieństwo kolizji.
lukaszk
Masz na myśli coś takiego

  1. $salt = 'ldjf8erhqr9814-1438';
  2.  
  3. $hashed_pwd = sha1($password . $salt);


Z kolizją raczej nie będę miał problemu gdyż będzie tylko jeden admin (jeśli dobrze zrozumiałem)
nospor
nie htmlspecialchars a mysql_escape_string

Cytat
Z kolizją raczej nie będę miał problemu gdyż będzie tylko jeden admin (jeśli dobrze zrozumiałem)
źle zrozumiales
http://forum.php.pl/index.php?showtopic=44...t=0&start=0
lukaszk
Trochę poczytałem i znalazłem sposób taki w którym forumowicze piszą że wystarczy ale po wpisaniu w pole login

  1. $login = htmlspecialchars(stripslashes(strip_tags(trim($_POST["login"]))), ENT_QUOTES);


pojawia się
  1. ">&lt;script>java script:alert("Test XSS");&lt;/script>

wynik tego działania
  1. <script>java script:alert(\"Test XSS\");</script>" id="login" />


już nie wiem jak mam zabezpieczyć formularze nie wiem co robię źle proszę o pomoc


Czy może jednak to co się pojawiło mimo że się pojawiło smile.gif jest prawidłowym działaniem tych zabezpieczeń.
Proszę o pomoc
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.