Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: czy sesje są bezpieczne no i czy xml ?
Forum PHP.pl > Forum > PHP
nikosss
witam, mam pytanko - robie panel administracyjny - admin ma możliwość sie zalogowania i dostęp do określonych części serwisu i mam to zrobione tak:

  1. <?php
  2. $haslo_kod=md5(oczysc($_POST['adm_haslo'], t, 20));
  3. $login_admina=oczysc($_POST['adm_login'], t, 10);
  4. $dupe_admin = mysql_query ("select adm_login,adm_pass from ".$prefix."admin where adm_login='$login_admina' AND adm_pass='$haslo_kod'");
  5. if (mysql_num_rows($dupe_admin)>0){
  6. if (session_is_registered(session_odczyt_praw)){}else{
  7. $sql_select = mysql_query( "select last,last_p,licznik,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,
    p16,p17
  8. p18,p20,p21,p22,p23,p25,p26,p27 from ".$prefix."admin where adm_login='$login_admina'");
  9. while ($row = mysql_fetch_array($sql_select)){
  10. $_SESSION["adm_last"]=$row["last"];
  11. $_SESSION["adm_last_p"]=$row["last_p"];
  12. $_SESSION["adm_upr2"]=$row["p2"];
  13. $_SESSION["adm_upr3"]=$row["p3"];
  14. $_SESSION["adm_upr4"]=$row["p4"];
  15. $_SESSION["adm_upr5"]=$row["p5"];
  16. $_SESSION["adm_upr6"]=$row["p6"];
  17. $_SESSION["adm_upr7"]=$row["p7"];
  18. $_SESSION["adm_upr8"]=$row["p8"];
  19. $_SESSION["adm_upr9"]=$row["p9"];
  20. $_SESSION["adm_upr10"]=$row["p10"];
  21. $_SESSION["adm_upr11"]=$row["p11"];
  22. $_SESSION["adm_upr12"]=$row["p12"];
  23. $_SESSION["adm_upr13"]=$row["p13"];
  24. $_SESSION["adm_upr14"]=$row["p14"];
  25. $_SESSION["adm_upr15"]=$row["p15"];
  26. $_SESSION["adm_upr16"]=$row["p16"];
  27. $_SESSION["adm_upr17"]=$row["p17"];
  28. $_SESSION["adm_upr18"]=$row["p18"];
  29. $_SESSION["adm_upr20"]=$row["p20"];
  30. $_SESSION["adm_upr21"]=$row["p21"];
  31. $_SESSION["adm_upr22"]=$row["p22"];
  32. $_SESSION["adm_upr23"]=$row["p23"];
  33. $_SESSION["adm_upr25"]=$row["p25"];
  34. $_SESSION["adm_upr26"]=$row["p26"];
  35. $_SESSION["adm_upr27"]=$row["p27"];
  36. $adm_licznik_old=$row["licznik"];
  37. }
  38. $adm_licznik_new=($adm_licznik_old+1);
  39. $sql_licznik = "update ".$prefix."admin set licznik=$adm_licznik_new where adm_login='$login_admina'";
  40. $result = mysql_query ($sql_licznik);
  41. $_SESSION["session_odczyt_praw"]="tak";
  42. }
  43. }
  44. ?>



Czy jest to bezpieczne ? - czy zapytanie do bazy dobrze zrobiłem ? czy można jakoś inaczej to zrobić ?
netmare
Jeżeli oczysc() działa jak mysql_real_escape_string() i uwzględnia czy na serwerze jest włączone/wyłączone magic quotes to samo zapytanie do bazy wygląda dla mnie na bezpieczne. Co do sesji, jeżeli używasz standardowych mechanizmów PHP do przechowywania sesji, to musisz pomyśleć o zabezpieczeniu się przed session fixation oraz w przypadku współdzielonego serwera o zmianie ścieżki przechowywania sesji. W przypadku przechowywania w bazie danych pamiętaj o session poisoning.
.radex
Ciężko się doczytać bo kod jest straszny (pomieszanie stylów, brak dbałości o taby, zero odstępów między operatorami), ale jeśli oszysc() jest zabezpieczeniem przeciwko SQL Injection to chyba jest ok.

Ale jedna wskazówka dotycząca składni - dałeś

Kod
session_is_registered(session_odczyt_praw)


Poprawnie powinno być:

Kod
session_is_registered('session_odczyt_praw')


PS. Co to jest $dupe_admin blink.gif ? Ciekawszej nazwy już nie mogłeś dać biggrin.gif
nikosss
hehe oj mam ciekawsze nazwy w kodzie biggrin.gif - tak oczysc zabezpiecza przed wpierniczaniem nieodpowiednich znaczków zamiast np ID - serwer mam swój - nie wiem co to jest to session fixation ale mam jeszcze dodatkowo w każdym pliku zabezpiecznie - ustawioną sesje admina oraz jeszcze dodatkowy algorytm wyciagany z bazy danych - czyli jesli ktoś coś zmiesza z sesjami to nie będzie odpalona główna sesja - i wogóle nie bedzie widac zawartosci panelu (tu dałem jeszcze dodatkowo ten algorytm - jakby jakiś Cfaniak sobie w ciemno sesje ustawiał) - czyli podsumowując działa to tak:

1 - logowanko -> ustawienie sesji Administracyjnej - i porównywanie jej z algorytmem z bazy danych [wczesniej pobranym]
2 - po logowanku ustawiane są sesje dostępowe - te co widać

wiec chyba bezpiecznie smile.gif

aha a jak sie ma sprawa jeśli mam plik xml - a w tym pliku pewne zmienne - robie to tak ze na kilku panelach zaczytuje xml-ka i ustawiam sesje z tych zmiennych - teraz czy ktoś może mi tego xml-ka zmienic ? jakie chmod musze na niego dac zeby nie mozna bylo go edytować ?
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.