Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Jak dobrze zabezpieczyć swój panel admina?
Forum PHP.pl > Forum > Przedszkole
Olsz4k
Witam, stworzyłem już swój własny panel admina, który działa tak jakbym chciał, jednak na pewno nie jest on odpowiednio zabezpieczony.
Na wstępie zacznijmy od samego logowania, robię to tak:
  1. if(isset($_POST['Zaloguj']))
  2. {
  3. $l = mysql_escape_string($_POST['login']);
  4. $h = mysql_escape_string($_POST['haslo']);
  5. $q = "SELECT * FROM uzytkownicy WHERE login like '$l' AND haslo like '$h'";
  6. $w = mysql_query($q);
  7. $ile = @mysql_num_rows($w);
  8. if($ile == 1)
  9. {
  10.  
  11. //tutaj następuje przekierowanie do panelu admina w przypadku pomyślnego logowania
  12.  
  13. }
  14. else
  15.  
  16. echo "<p class='false'>Podano błędny login lub hasło! Spróbuj ponownie.</p>";
  17.  
  18. }
  19. }


Teraz, czy mysql_escape_string jest wystarczające? Czy można to zrobić jeszcze jakoś lepiej?
Co z hasłami? Tzn. jak je kodować?Moja tabela użytkowników wygląda tak: id,login,haslo. Jaką metodą kodować hasło? W książce którą czytałem była mowa o SHA().


Idąc dalej, chodzi już o samo wyświetlanie zawartości z mojej bazy, np. robię to tak:
  1. <?php
  2.  
  3.  
  4. if(empty($_GET['id']))
  5. {
  6.  
  7.  
  8. echo '<div class="dodany">'.'Brak tresci'."</div>";
  9.  
  10.  
  11. }
  12.  
  13. else
  14.  
  15. {
  16.  
  17. $zapytanie="SELECT * from artykuly WHERE id='$id'";
  18. $wykonaj=mysql_query($zapytanie);
  19. while($wiersz=mysql_fetch_array($wykonaj))
  20. {
  21. echo '<div class="naglowek">'.$wiersz['tytul'].'</div><div class="data">'.$wiersz['data'].'</div><div class="dodany">'.$wiersz['tresc']."</div>";
  22. }
  23. }
  24. ?>

Czyli zbieram idika, jak jest to wyświetlam treść, a jak nie to wiadomo smile.gif
Czy takie zapytania są poprawne i stosowane jeszcze? Czy robi się to jakoś "lepiej" i "optymalniej"? Pytam tutaj, bo macie duże doświadczenie w tym i uważam że możecie mi pomóc i co nieco rozjaśnić.
Dzięki!
Tajemnica_zawodowa
Polecam ci PDO

  1. $stmt = $pdo -> prepare('UPDATE `'.$prefix_mysql.users.'` SET `password` = :pass WHERE id = :id');
  2. $stmt -> bindValue(':id', $get_data['id'], PDO::PARAM_INT);
  3. $stmt -> bindValue(':pass', set_password($newpass), PDO::PARAM_STR);
  4. $stmt -> execute();


I nie musisz się meczyć w żadne escape itp
Olsz4k
Ok, czy dużo czasu mi zajmie przeskoczenie na obiektówkę? Rozumiem, że te zapytania które zaprezentowałem powoli odchodzą do lamusa? Ewentualnie ktoś mógłby polecić jakąś książkę + darmowy poradnik? Nie musi być dla kompletnego laika, coś tam jako tako kumam. smile.gif
Olsz4k
Heh, dzięki, jeszcze jakby ktoś podrzucił jakąś książkę/kurs video który warto kupić to byłbym wdzięczny.
No i na pytania zawarte w pierwszym poście jakby udzielił ktoś odpowiedzi to też byłoby super - chciałbym skończyć odpowiednio to co już zacząłem. Dziękuję jeszcze raz!
Turson
Do PDO nie trzeba żadnych książek, bo wszystko jest łatwe do opanowania i wystarczy jakiś tutorial na necie.
W jaki sposób zabezpieczasz panel admina, sesja?
Olsz4k
Ok, dzieki.
Tak, panel zabezpieczony przez sesje smile.gif
mar_gor
Dodatkowo możesz dać session (timeout)
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.