ďťż

[PHP] System zabezpieczeń Sesje

       

Podstrony


telcocafe

Witam

Co myślicie o funkcjonalności / bezpieczeństwie tego kodu? Jest includowany na każdej podstronie panelu administracyjnego. Co byście dodali / poprawili?

<? session_start(); function xsstest($string) { return $string = str_replace('\'','',str_replace(';','',htmlspecialchars(strip_tags($ string,ENT_QUOTES)))); } if(!isset($haslo)) { echo '<center>Podaj hasło:<br><form method="post" action="index.php"><input type="password" name="haslo"<br><input type="submit" name="loguj" value="loguj"></center></form>'; exit; } elseif ($_GET["acc"]=='logout') { session_destroy(); echo '<center>Zostałeś pomyślnie wylogowany.<br /><a href="../index.php">Powrót do strony głównej</a><form method="post" action="index.php"><input type="password" name="haslo"<br><input type="submit" name="loguj" value="loguj"></center></form>'; exit; } elseif (md5(xsstest($_POST['haslo']))=='d9eaabe53adedb62bc74b7eb0a9477d4') { session_register('haslo'); } ?>



Hmmm, tam jest chyba z lekka używane register_globals, jak się nie mylę?
Może bym inaczej zrobił tę funkcję - xsstest ;)

No i nie ma możliwości, żeby - jak user wejdzie niezalogowany na stronkę z np. obsługą komentarzy - nie musiał iść od index.php dalej, przez wszystkie menu itd. Rozumiesz, o co mi chodzi? ;)

Hm, session_register zamień na $_SESSION, gdyż przy wyłączonym register_globals (zalecane) nie będzie Ci to działać.

BTW: Zamiast:

return $string = str_replace('\'','',str_replace(';','',htmlspecialchars( strip_tags($string,ENT_QUOTES))));
Możesz po prostu:

return str_replace('\'','',str_replace(';','',htmlspecialchars( strip_tags($string,ENT_QUOTES))));

//pbnan mnie wyprzedził.
Użytkownik Coldpeer edytował ten post 26 styczeń 2007, 20:02
<? session_start(); function xsstest($string) { return str_replace('\'','',str_replace(';','',htmlspecialchars(strip_tags($ string,ENT_QUOTES)))); } if (md5(xsstest($_POST['haslo']))=='TU MD5') { $_SESSION['login'] = 'true'; } elseif($_SESSION['login']!='true') { echo '<center>Podaj hasło:<br /><form method="post" action="index.php"><input type="password" name="haslo" /><br /><input type="submit" name="loguj" value="loguj" /></center></form>'; exit; } elseif ($_GET["acc"]=='logout') { $_SESSION['login'] = 'false'; echo '<center>Zostałeś pomyślnie wylogowany.<br /><a href="../index.php">Powrót do strony głównej</a><form method="post" action="index.php"><input type="password" name="haslo" /><br><input type="submit" name="loguj" value="loguj" /></center></form>'; exit; } ?>

lepiej ?
Użytkownik pawkow edytował ten post 26 styczeń 2007, 21:04


Lepiej, ale swoją drogą po co do sesji przypisujesz stringa, jak możesz boola?

$_SESSION['login'] = true;

Do tego w takim razie zamiast:

elseif($_SESSION['login']!='true')

możesz dać:

elseif(!$_SESSION['login'])

PS. $_SESSION['login'] = 'false'; zamiast tego usuń sesję session_register, bo po co Ci sesja do niczego niepotrzebna?
Użytkownik Coldpeer edytował ten post 26 styczeń 2007, 21:02
hehe, wielkie dzięki :) Nie wpadłem na to, po prostu stringi wydawały mi się rozwiązaniem oczywistym. Ok, kod teraz przedstawia się tak:

<? session_start(); function xsstest($string) { return str_replace('\'','',str_replace(';','',htmlspecialchars(strip_tags($ string,ENT_QUOTES)))); } if (md5(xsstest($_POST['haslo']))=='TU MD5') { $_SESSION['login'] = true; } elseif(!$_SESSION['login']) { echo '<center>Podaj hasło:<br /><form method="post" action="index.php"><input type="password" name="haslo" /><br /><input type="submit" name="loguj" value="loguj" /></center></form>'; exit; } elseif ($_GET["acc"]=='logout') { $_SESSION['login'] = false; echo '<center>Zostałeś pomyślnie wylogowany.<br /><a href="../index.php">Powrót do strony głównej</a><form method="post" action="index.php"><input type="password" name="haslo" /><br><input type="submit" name="loguj" value="loguj" /></center></form>'; exit; } ?>
Użytkownik pawkow edytował ten post 26 styczeń 2007, 21:05
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.