Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Bezpieczeństwo sesji
Forum PHP.pl > Forum > Przedszkole
koxu1996
Witam. Mam pytanie odnośnie bezpieczeństwa sesji w PHP. Czy użytkownik może je w jakiś sposób przesłać lub zedytować ich zawartość? Czy jeśli w zapytaniach mySQL korzystam z wartości sesji to muszę je filtrować?
CuteOne
Podstawowa zasada - filtruj wszystko co pochodzi od użyszkodnika, kropka
koxu1996
No tak ale czy sesje użytkownik może jakoś zedytować?
Sephirus
Sesje (w domyślnych ustawieniach) zapisywane są w formie plików na serwerze. Uzytkownik WWW nie może więc ich w żaden sposób edytować. Aby edytować dane sesji trzeba by było użyć jakiejś dziury w twojej aplikacji, która pozwalała by na zapisanie do sesji pod jakąś określoną zmienną czegokolwiek, lub mieć dostęp do plików serwera.

Mechanizm sesji z założenia jest bezpieczny o tyle o ile zabezpieczony jest dostęp do samego serwera. Może myli Ci się to z COOKIES, które (ab)user może dowolnie modyfikować. Sesja jest bezpieczniejszym mechanizmem.

Rób tak jak powiedział przedmówca bo mądrze mówi - cokolwiek nie przychodzi od (ab)usera musi być zwalidowane, przefiltrowane i dopiero gdzieś można to wrzucić. smile.gif
viking
Tylko żebyś źle nie zrozumiał. Sesje w swoim stanie, tak wszystko inne user nie będzie w stanie zmienić. Natomiast sesje te trzeba jakoś przenosić pomiędzy requestami (cookies, local storage, url) a wszystko co jest po stronie użytkownika ten może zmodyfikować. Kojarzę że był uż dosć solidny wątek gdzie nawet sam pisałem. Poszukaj na forum.
amii
Cytat(koxu1996 @ 21.01.2013, 11:21:34 ) *
No tak ale czy sesje użytkownik może jakoś zedytować?


Owszem np. poprzez atak typu session poisoning, na który jednak są narażone strony występujące na współdzielonym hostingu (przy złych zabezpieczeniach). O bezpieczeństwie sesji możesz poczytać tutaj: http://www.beldzio.com/bezpieczenstwo-mechanizmu-sesji
!*!
A czy Wy przypadkiem nie przesadzacie? Temat wałkowany niejednokrotnie, a nawet info z przyklejonych się znajdzie.
CuteOne
Tak mniej więcej wyglądał kawałek kodu z jakiegoś open sourcowego cmsa
  1. if(!empty($_POST['autor']) AND isset($_POST['tresc']))
  2. {
  3.  
  4. //zapiszemy do sesji, żeby później pole było zawsze wypełnione
  5. $_SESSION['autor'] = $_POST['autor'];
  6.  
  7.  
  8. // gdzieś tam dalej w kodzie...
  9. $zapytanie = mysql_query("UPDATE posty SET tresc = '".$_POST['tresc']."' WHERE autor = '".$_SESSION['autor']."'");
  10.  
  11. }

Jak widać nie trzeba edytować sesji aby nabroić smile.gif

@UP Nie przesadzam... nie jestem ogrodnikiem
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.