Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Bezpieczeństwo systemu uprawnień, czy to aby bezpieczne?
wibe
post 4.12.2005, 12:25:46
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 26.11.2005

Ostrzeżenie: (0%)
-----


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


--------------------
Go to the top of the page
+Quote Post
dtb
post 4.12.2005, 12:34:22
Post #2





Grupa: Zarejestrowani
Postów: 476
Pomógł: 1
Dołączył: 5.11.2005
Skąd: Bieruń city

Ostrzeżenie: (0%)
-----


register_globals:
$_SESSION['nazwa'] a nie $nazwa


--------------------
Go to the top of the page
+Quote Post
andrzejb
post 5.12.2005, 14:46:49
Post #3





Grupa: Zarejestrowani
Postów: 93
Pomógł: 1
Dołączył: 12.08.2005

Ostrzeżenie: (10%)
X----


zawsze istnieje mozliwosc przechwycenia sesji dlatego warto zawsze dorobic do systemu logowania sprawdzanie ip znacie jakies inne sposoby na zwiekszenie bezpieczenstwa sesji ?


--------------------
web lowcy.com.pl gg 1675677
Go to the top of the page
+Quote Post
wibe
post 5.12.2005, 21:11:27
Post #4





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 26.11.2005

Ostrzeżenie: (0%)
-----


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


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 15.07.2025 - 12:57