Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Czy to są poprawnie zrobiona sesja?
Forum PHP.pl > Forum > Przedszkole
breq
Hej!

Zaczynam zabawę z sesjami, napisałem coś takiego:

logowanie:
  1. <form enctype='multipart/form-data' action='login.php' method='POST'>
  2. <table border='0'>
  3. <tr>
  4. <td>Login:</td>
  5. <td><input type='text' name='login' size='20' style='border: 1px solid Black'/></td>
  6. </tr>
  7. <tr>
  8. <td>Hasło:</td>
  9. <td><input type='password' name='haslo' size='20' style='border: 1px solid Black'/></td>
  10. <td rowspan='2'><input type='image' src='gfx/login.png'width='24' value='zaloguj' alt='zaloguj' style='vertical-align:middle;' onfocus='this.blur()'/></td>
  11. </tr>
  12. </table>



login.php:
  1. if($haslo_hash==$haslo_z_bazy)
  2. {
  3. if (!isset($_SESSION['zalogowany']))
  4. {
  5. $_SESSION['zalogowany'] = 1;
  6. $login=$_SESSION['login'];
  7. }
  8. echo "<script>setTimeout('document.location = \"index.php\"', 1);</script>";
  9. }
  10. else
  11. {
  12. echo "<div align='center'><b>Ups!</b><br/>Cos poszlo nie tak!</div>";
  13.  
  14. }


i sam nagłówek:
  1. <?php
  2. if ($_SESSION['zalogowany'] == 1) {
  3. $_SESSION['login']=$_POST["login"];
  4. $login=$_SESSION['login'];
  5. }
  6. ?>



Czytalem troche o sesjach, m. in. tutaj
http://pl.wikibooks.org/wiki/PHP/Sesje
i zabezpiecze je jeszcze adresem IP, natomiast ciekawi mnie co myslicie o takim sposobie logowanie?
Przypuszczam, ze jest to wręcz śmieszne zabezpiczenie, może macie dostępne wasze przykłady jak używacie sesji albo jakiś konkretny poradnik?
CuteOne
zamiast
echo "<script>setTimeout('document.location = \"index.php\"', 1);</script>";

uzyj nagłówka
header('Location: http:/ /mojewww .pl/index.php');

a to "$login=$_SESSION['login'];" po co?

ps. co do tytułu tematu - google -> php zabezpieczenie sesji
siwy21
Jeśli chcesz zrobić bezpiecznie to zapisuj do sesji dodatkowo np. IP użytkownika i porównuj za każdym wywołaniem z tym, które ma user. Inaczej jeśli ktoś przejmie cookie sesji innego usera, będzie mógł skorzystać z jego uprawnień

dodaj do skryptu logowania (tam gdzie logujesz usera) np.
  1. $_SESSION['verify'] = md5($_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT'] . $salt);

($salt - to losowa kombinacja znaków, stwórz gdzieś wcześniej w skrypcie tą zmienną i wypełnij losowymi danymi) .np

  1. $salt = "w}V{UOv%0_MV$[yR4,Tv*RdYCs.Oq^bM[XBEdXy3H.qzUO_qsCLo(";


Następnie porównaj przy każdym wywołaniu strony np. tak:

  1. if (!$_SESSION['verify'] || $_SESSION['verify'] != md5($_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT'] . $salt)) {
  2. //skrypt do wykonania jeśli hashe się różnią (czyli user ma inne IP lub przeglądarke)
  3. }


To powinno dodać jakieś zabezpieczenie do sesji wink.gif


btw.
  1. $_SESSION['login']=$_POST["login"];


dobra praktyka, to nigdy nie wierzyć użytkownikowi wink.gif Zabezpieczaj dane, które pobierasz z $_POST, $_GET, $_COOKIE wink.gif np.
  1. $_SESSION['login']=htmlentities($_POST["login"], ENT_QUOTES);
breq
dzieki Panowie, z pewnością skorzystam z waszych rad smile.gif
to biorę się za pisanie :]
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.