![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 106 Pomógł: 0 Dołączył: 12.02.2004 Ostrzeżenie: (0%) ![]() ![]() |
Cześć.
Mam pytanie, odnośnie przechowywania i przekazywania zmiennych reprezentujących ID użytkownika, zakładając, że mamy jakiś panel admina i kilku użytkowników. Otóż, na stronie mam kilka skryptów jquery, które potrzebują przekazać ID użytkownika. Ale jeśli to zrobię, to jego ID będzie widoczny dla każdego (np. w podglądzie źródła). Wykombinowałem sobie tak, że każdy user ma swój unikalny TOKEN (jakiś hash), który generuje się za każdym logowaniem nowy. I w javascript przekazuję ten właśnie token, a nie ID użytkownika. Dopiero później, kiedy jquery "realizuje" jakoś inny skrypt php, korzystając z tego TOKENA, pobieram sobie sobie ID użytkownika z bazy danych i działam. Dlaczego takie coś? Ponieważ zmienne SESJI nie działają w plikach php wywołanych przez jQuery i GET. Otóż: Pliki, które sobie może użytkownik wgrać na stronę, mogłyby mieć w nazwie (lub katalogu) numer ID, np. 1_obrazek.jpg (plik obrazek, którego właścicielem jest user ID:1). Jak sobie ktoś skopiuje URL obrazka i zastąpi numerek jakimś innym, to może podglądnąć obrazki inych userów. A niech spróbuje zgadnąć TOKEN! Marna szansa. To się też tyczy wykonywania jakichkolwiek operacji, gdzie ID usera jest jawny w kodzie. Ktoś sobie odpali ten sam formularz, ale w polu (załóżmy) <input name="user_ID"> wpisze sobie inny ID i będzie klęska ![]() I teraz moje pytanko: - czy to co wydumałem z tym tokenem jest bezpieczne? Chodzi mi właśnie o przekazywanie unikalnych zmiennych przez javascript (czyli jawne). Jeśli nie jest, to w jaki sposób - bezpiecznie - przekazać ID użytkownika do jakiegoś skryptu ładowanego przez GET?
A potem:
Ten post edytował hao 27.06.2017, 23:55:03 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Podstawowe pytanie jakie musisz sobie zadać to jakim cudem użytkownik x może pobierać z bazy rekordy należące do innych użytkowników.
-------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 106 Pomógł: 0 Dołączył: 12.02.2004 Ostrzeżenie: (0%) ![]() ![]() |
Nie wiem.
- wydaje mi się, że nie może. Wszystkie stringi są sprawdzane (sanitize) przed użyciem w mysql. Session['id'] jest przecież po stronie serwera. - raczej zastanawiam się, czy znając np. domyślną ścieżkę z plikami użytkowników, ktoś znając adres swojego pliki, może np. spróbować postawić inną losową liczbę (np.: www.adres.pl/pliki/uzytkownik_1_dokument.pdf ===> www.adres.pl/pliki/uzytkownik_25_dokument.pdf) - oczywiście to teoretyzowanie. Mając pliki w strukturze [nazwa pliku: hash('prawdziwa nazwa pliku'.$_SESSION['id']) - to chyba raczej będę bezpieczny? |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Dlaczego takie coś? Ponieważ zmienne SESJI nie działają w plikach php wywołanych przez jQuery i GET. No patrz, od late tego uzywam i nie zauwazylem ze nie dziala.... Ty, dobrze ze nas oswieciles.... ![]() A juz powaznie: niby czemu nie dziala? Sesje guzik obchodzi czy to ajax czy nie. Czy to get czy post. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 106 Pomógł: 0 Dołączył: 12.02.2004 Ostrzeżenie: (0%) ![]() ![]() |
Bardzo pomocna odpowiedź!
Dotarło właśnie do mnie, że nie wrzuciłem session_start do plików ładowanych przez GET przez jQuery. To właściwie zamyka cały ten temat, bo nie muszę już kombinować z tokenami itp... Dzięki ![]() |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 01:05 |