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?
var Token = '10b3d9cf5cd3439672c71855bca6e8e176fab687a0981ec10c683e527f7f86141'; var variables = {"Adres":JakasZmienna, "token":Token}; $.get( 'save.php', variables, function() { ...
A potem:
$query = "SELECT `id` FROM users where `token`='".$_GET['token']."' LIMIT 1"; $row = $result->fetch_assoc(); $UserID = $row['id'];