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ę:
<?php function checkPermission($user_id,$upr) { if($user_id == 1) return TRUE; $wynik = mysql_query('SELECT * FROM permissions WHERE (user_id = '.$user_id.' AND perm = '.$upr.')'); if($liczba == 1) return TRUE; else return FALSE; } ?>
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