Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Realizacja poziomów dostępu do strony
Forum PHP.pl > Forum > Przedszkole
lukasz_matysek
W systemie który tworzę (baza przechowywana w mysql, dostęp poprzez www) będą istnieć różne konta użytkowników, z różnymi uprawnieniami. Zamierzam je zrealizować poprzez nadanie użytkownikom odpowiedniego poziomu dostępu. Ów poziom dostępu ma być pobierany z bazy w momencie logowania użytkownika i podstawiany pod zmienną sesyjną, nazwaną access_level. Sama realizacja kontroli będzie odbywać się na zasadzie:
  1. if ($access_level == .... )
  2. {
  3. //tutaj kod przewidziany do uruchomienia, kiedy user jest uprawniony do tego.
  4. }


Moje pytanie jest proste: czy jest to dobra metoda na realizację systemu kontrolowania dostępu do pewnych elementów strony, w zależności od rangi użytkownika? Czy nie jest to metoda podatna na jakieś ataki? Czy istnieje, z punktu widzenia klienta bazy, jakaś możliwość wpływania na zmienne sesyjne aby po zalogowaniu zmienić swoją rangę i uzyskać większy dostęp w ramach tej samej sesji?
lobopol
No cóż zawsze istnieje prawdopodobieństwo przejęcia sesji, dlatego dodatkowo radzę dodać następujące rzeczy do sesji:
-$_SESSION['protect'] i w niej trzymać wygenerowany wcześniej hash zabezpieczający składający się np. z loginu, adresu ip, przeglądarki użytkownika, systemu, numeru sesji i jakiejś soli
-przy każdym odświeżeniu stronynajpierw sprawdzać czy hash zabezpieczający się zgadza (znowu go sobie generować i porównać z istniejącym)
-jeżeli hash się zgadza puścić funkcje session_regenerate_id(true) i na nowo wygenerować i zapisać hash zabezpieczający
lukasz_matysek
Korzystając z Twojej podpowiedzi, utworzyłem hasha skadającego się z kilku wartości z tablicy $_SERVER oraz (jako sól) lekko zmodyfikowanego wyniku funkcji microtime(). Hash zmienia się z każdym reloadem, bo jest regenerate_id, jak też microtime daje za każdym razem inną wartość.

Rzecz bardzo fajna, spodobało mi się kombinowanie z hashami. Dzięki za poradę.
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.