Bezpieczeństwo systemu logowania (Sesja)

Bezpieczeństwo systemu logowania (Sesja)
DK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 49
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

Kopiuj
// 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)

mr_jaro
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Grudziądz/Bydgoszcz
  • Postów: 5300
DE
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1788
0
  • session hijacking
  • session fixation
  • xss session cookie

Webowiec
  • Rejestracja: dni
  • Ostatnio: dni
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.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.