Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sesja
Forum PHP.pl > Forum > PHP
carbolymer
Ciekawi mnie kwestia bezpieczeństwa danych w sesji. Czy jak zapiszę w sesji dane rodzaju:
  1. <?php
  2. $_SESSION['login'] = 'zenek';
  3. $_SESSION['haslo'] = 'a6e5v3z8erg4';
  4. ?>

Mogą one zostać odczytane?
Jeżeli tak, czy dostanie się do danych przez osobę zewnętrzną jest łatwe?
babejsza
Ogólnie jest tak, że niemożliwe to jest odwrócić hełm na drugą stronę czy otworzyć parasol w ...

Jeżeli dane mają być bezpieczne to najlepiej je zakodować.

Dostanie się do danych zapisanych w sesji zależy od tego jak dobrze zabezpieczony jest serwer.
pbnan
Nie jestem pewien tego, co piszę, więc jakbym zrobił jakąś pomyłkę, to mi wybaczcie.
---
Sesja i jej zawartość jest przetrzymywana po stronie serwera. Żeby się do tych danych dostać, potrzebujesz session id. Jest on przetrzymywany:
a ) w cookie,
b ) poprzez adres URL przekazuje się go.
Gdy poprawny SSID zostanie przekazany do witryny, ta udostępni dane. Zatem najważniejsze jest nie dopuścić do przechwycenia cookie (bo to się najczęściej stosuje przy sesjach). A przechwycić można poprzez np. XSS, dlatego trzeba uważać nieźle na bezpieczeństwo swoich aplikacji.
carbolymer
a takie zastosowanie jest bezpieczne (przetwarzane podczas każdego przeładowania strony): questionmark.gif
  1. <?php
  2. function realIP()
  3. {
  4. if ($_SERVER['HTTP_X_FORWARDED_FOR'])
  5. return $_SERVER['HTTP_X_FORWARDED_FOR'];
  6. else
  7. return $_SERVER['REMOTE_ADDR'];
  8. }
  9.  
  10. if($_SESSION['sip'] != realIP())
  11. {
  12. }
  13. ?>

w $_SESSION['sip'] przechowuję IP użytkownika (zapisywane podczas logowania).
domis86
Cytat(carbolymer @ 7.05.2007, 17:37:22 ) *
a takie zastosowanie jest bezpieczne (przetwarzane podczas każdego przeładowania strony): questionmark.gif
  1. <?php
  2. function realIP()
  3. {
  4. if ($_SERVER['HTTP_X_FORWARDED_FOR'])
  5. $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
  6. else
  7. $ip = $_SERVER['REMOTE_ADDR'];
  8. }
  9.  
  10. if($_SESSION['sip'] != realIP())
  11. {
  12. }
  13. ?>

w $_SESSION['sip'] przechowuję IP użytkownika (zapisywane podczas logowania).


no niby tak, ale co jezeli ktos ma zmienne ip, i zmienia mu sie ono czesto?

Pozatym przejęcie ciasteczka nie jest takie proste. Opłaca się zabezpieczać przed jeżeli robisz jakąś poważną aplikacje.
pbnan
Nie jest bezpieczne. Bo nie zadziała.
1. Nie zwracasz nic w realIP();
2. nie masz session_start();
.radex
Hmmmm... A powiecie mi może dlaczego ja przy moich aplications nigdy nie miałem żadnego ciacha?
pbnan
Bo może miałeś przekazywanie przez URL, o czym pisałem wyżej? Może nie korzystałeś z sesji? Może czegoś ja nie wiem (bardzo możliwe)? Jak widzisz, dużo możliwości, radex_p. smile.gif
.radex
hmm.... zawsze standardowa procedurka: session_start();
i jak ustawiam nowe(lub modyfikuje) sesje to:
$_SESSION['nazwa'] = 'wartosc';

i w zasadzie chyba to wszystko co mam do powiedzenia tongue.gif
carbolymer
@domis86
ip się zmienia przy kazdym połączeniu do internetu, a mi się rozchodzi o sesję - dane przetrzymywane tylko podczas jednej wizyty na strone

@pbnan
to ejst fragment kodu, odpowiedzialny za bezpieczeństwo zmodyfikowany na potrzebę zamieszczenia na forum, mogła mi się zdażyć pomyłka - session start() i session_register() jest jakieś 500 linijek wyżej.

Mi się rozchodzi o bezpieczeństwo stosowania takich rozwiązań: przechowywania nazw użytkownika i hasła w sesji.
domis86
po co haslo przechowywac ? wsytarczy samo id, czy nazwa


Hmm, jesli myslisz ze sesja nie jest bezpieczna bo mozna ukrasc cistko to tak samo ip nie jest 100% bezpieczne bo ktos moze zespoofowac. Tak mozna zabezpieczać w nieskonczonosc.
sobstel
na serwerach współdzielonych każdy posiadajacy konto na tym serwerze może odczytać sesje ponieważ zazwyczaj przechowywane są w katalogu /tmp, z ktorego kazdy moze czytac. polecam zmienienie tego katalogu przez dyrektywe session.save_path lub uzyc wlasnego handlera sesji (session_set_save_handler).

@radex_p, sesje moga byc przekazywane przez ciacho lub przez url. jesli u ciebie nie widzisz doklejonego w adresach id sesji tzn. ze jest przekazywane przez cookie - jest to robione automatycznie i pewnie nawet nie zdajesz sobie z tego sprawy.

@carbolymer, hasła w żadnym razie nie powinieneś przechowywać w sesji bo zupełnie nie ma to sensu i przed niczym nie zabezpiecza, wręcz przeciwnie.

Cytat(domis86)
Pozatym przejęcie ciasteczka nie jest takie proste. Opłaca się zabezpieczać przed jeżeli robisz jakąś poważną aplikacje.


wtedy tylko ssl, tylko to moze uchronic przed sniffingiem. a z podstawowych zasad to nie uzywac urlow do przekazywania identyfikatora.
.radex
Cytat
@radex_p, sesje moga byc przekazywane przez ciacho lub przez url. jesli u ciebie nie widzisz doklejonego w adresach id sesji tzn. ze jest przekazywane przez cookie - jest to robione automatycznie i pewnie nawet nie zdajesz sobie z tego sprawy.


Przez ciacho w takim razie, ale w $users_root$/cookies nigdy nie widziałem pliku od localhost:P
mild
Zainstaluj sobie wtyke do przegladarki winksmiley.jpg
Mam jedno pytanie na temat id'a sesji.
Jak zmieniec czy jest przekazywany przez get czy cookie? W php.ini?
bełdzio
session.use_only_cookies
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.