Bezpieczeństwo systemu logowania (Sesja)

0

Witam!

Mam pytanie: Jak bezpieczny jest system logowania który przetrzymuje informację o tym czy jesteśmy zalogowani i na jakie konto w sesji, przechowując np. numer ID

// PSEUDOKOD
session_start();

$_POST["login"];
$_POST["password"];

login = funkcja_sanityzująca($_POST["login"]);
password = funkcja_sanityzująca($_POST["password"]);

mysqli_connect();

$query = 'Select ID from users WHERE login=$login passowrd=$password'
$result = mysqli_query($query);

$result -> fech_assoc();

$id = $result["id"];

$_SESSION["id"] = id; //Tą zmienną chcę posługiwać się przy sprawdzaniu kto może wejść na daną stronę, czy wykonać operację

Czy można ukraść sesje (tak) ale czy nie mając virusa/korzystać z otwartych wifi itp można wykraść numer sesji?

Czy można w jakiś sposób zedytować zmienne sesyjne z poziomu użytkownika?

Chodzi o to by nikt nie mógł otrzymać ID w inny sposób niż poprzez logowanie (oczywiście odpowiedniego ID)

0
  • session hijacking
  • session fixation
  • xss session cookie

0

Sugeruję, dla zwiększenia bezpieczeństwa operacji wykonywanych w trakcie sesji wykonanie jakiegoś wymyślnego mechanizmu. Przykładowo:

  1. Jeśli login i hasło się zgadzają, stwórz zmienną $sesMD5 i przypisz do niej nast. wartość: md5( $_SERVER['REMOTE_ADDR'] . $_SERVER['USER_AGENT'] )
  2. Zapisz, tymczasowo, zmienną $sesMD5 w bazie.
  3. Kiedy użytkownik wykonuje operację wymagającą autoryzacji (zalogowania), ponownie stwórz $tempSesMD5 i porównaj z zapisaną w bazie zmienną.
  4. Jeśli się zgadzają, pozwól na wykonanie operacji.
  5. Jeśli się nie zgadzają, zabroń dostępu i przekieruj do strony logowania.

Mam nadzieję, że jasno wytłumaczyłem Ci o co chodzi :D

Zmienne tablicowe $_SERVER, które podałem identyfikują użytkownika. Na tej podstawie masz pewność, że to ten sam użytkownik, który się zalogował. Wraz z końcem sesji usuń też niepotrzebny wpis w bazie!

Pozdrawiam, Webowiec.

1 użytkowników online, w tym zalogowanych: 0, gości: 1