ďťż
Podstrony
|
telcocafeWitamCo 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 |
|||
Sitedesign by AltusUmbrae. |