Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Bezpieczeństwo systemu uprawnień
Forum PHP.pl > Forum > PHP
wibe
Witam.

Mam w bazie danych listę użytkowników oraz listę z uprawnieniami. Każde uprawnienie w tabeli wygląda: user_id | uprawnienie.

I teraz mam funkcję:

  1. <?php
  2.  
  3. function checkPermission($user_id,$upr)
  4. {
  5. if($user_id == 1)
  6. return TRUE;
  7. $wynik = mysql_query('SELECT * FROM permissions WHERE (user_id = '.$user_id.' AND perm = '.$upr.')');
  8. $liczba = mysql_num_rows($wynik);
  9. if($liczba == 1) 
  10. return TRUE;
  11. else 
  12. return FALSE;
  13. }
  14.  
  15. ?>


Jak widać jeśli użytkownik o Id = 1 to od razu zwraca TRUE. Dałem tak dlatego że Id = 1 ma zawsze Administrator który ma pełne uprawnienia.

Teraz działanie:
Powiedzmy że aby zrobić operację A (np. usuwanie komentarzy) trzeba mieć uprawnienie 2. Wywołuje więc funkcję z odpowiednimi parametrami i sprawdzam czy zwraca TRUE czy FALSE.

W każdym skrypcie user id podawany jest ze zmiennej sesyjnej ktora tyworzy sie po udanym zalogowaniu.

I teraz moje pytanie:
Czy jest możliwość aby ktoś po zalogowaniu zmienił zmienną sesyjną na np 1 i uzyskał pełny dostęp, czy jest możliwość żeby obejść to sprawdzanie uprawnień jeśli przy FALSE system przechodzi odrazu do strony z błędem a w przypadku nieudanego przejścia robi die().
Czy jest możliwość oszukania funkcji w jakikolwiek sposób.

Z góry dziękuję za pomoc. Szukajć nie znalazłem podobnego problemu na forum (co nie znaczy że nie był taki poruszany).

Pozdrawiam
dtb
register_globals:
$_SESSION['nazwa'] a nie $nazwa
andrzejb
zawsze istnieje mozliwosc przechwycenia sesji dlatego warto zawsze dorobic do systemu logowania sprawdzanie ip znacie jakies inne sposoby na zwiekszenie bezpieczenstwa sesji ?
wibe
Można napisać session handlera.
Sesja użytkownika trwała by dośc krótko i przy każdym autoryzowanym ruchu by przedłużała żywotność sesji. Narazie nie mam głowy do tego, zalezy mi jednak ogólnie żeby było to bezpieczne.

Gdzieś kiedyś czytałem o luce w starym IE gdzie strona z odpowiednio speparowanym kodem była w stanie wykraść ciastko z innej strony, a więc w tym wypadku numer sesji. Oprócz tego jeśli ktoś ma wyłączone cookies, to w przypadky przesyłania SID w adresie też mozna to chyba łatwo przechwycić.

Mam pytanie do doświadczonych użytkowników: czy sesje są bezpieczne na tyle by używac ich w przypadku ważnych danych. Wszystkie skrypty jak osCommerce czy Fora dyskusyjne korzystają z sesji i o ile mi wiadomo nie są jakoś specjalnie kulawe w przypadku bezpieczeństwa.

pozdrawiam
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.