Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zabezpieczenie zmiennej
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
wojakin
Witam. Ostatnio stworzyłem skrypt w js do komunikacji z serwerem. Ma on za zadanie zmieniać liczbę monet, jednak aby go zabezpieczyć chciałem wykonać coś takiego:

-przeglądarka wysyła nową liczbę monet i obecne hasło,
-serwer sprawdza czy hasło jest poprawne,
-jeśli tak zapisuje nową wartość do bazy.

A pobieranie hasła odbywa sie tak:
-przeglądarka wysyła prośbę o hasło do serwera, przekazując przy tym poprzednie hasło (chyba że jest to dopiero początek sesji wtedy hasło jest puste),
-serwer przekazuje przeglądarce nowe hasło,
-przeglądarka zapisuje hasło do zmiennej.

I to pobranie następuje co 10 sec.

Skypt js:
  1. setInterval(getPassword,10000); //Zmiana hasla co 10 sec
  2.  
  3. function getPassword (){
  4. if(login !== undefined){
  5. $.post (pageLink + "getSessionPassword.php", {lastPassword : localStorage.getItem("serverPassword")}, function (password){
  6. //console.log(localStorage.getItem("serverPassword"));
  7. if(password=="Error")
  8. console.error("Zle haslo");
  9. else
  10. localStorage.setItem("serverPassword", password);
  11. console.log(password);
  12. return 0;
  13. }
  14. );
  15. } else return -1;
  16. }



Skrypt getSessionPassword.php:
  1. <?php
  2.  
  3.  
  4. if($_POST["lastPassword"] == $_SESSION["sessionPassword"]){
  5. $_SESSION["sessionPassword"] = rand(11111111111, 999999999999999999999);
  6. echo $_SESSION["sessionPassword"];
  7. }
  8. else
  9. echo "Error";
  10.  
  11. ?>


No i skrypt do zmiany ilości monet:
  1. function TokenMinus (tokenNum)
  2. {
  3. if (tokenNum > 0)
  4. {
  5. tokens -= tokenNum;
  6. $.post(pageLink + "setTokens.php", {newTokensNumber: tokens, connectPassword: localStorage.getItem("serverPassword")}, function (a){
  7. if(a == "Error")
  8. console.error("Bad server password");
  9. });
  10. document.getElementById("tokensNum").textContent = tokens;
  11. }
  12. else
  13. console.error("Bledna ilosc tokenów");
  14. }


I wszystko by było fajnie gdyby nie to że przez przeglądarkę można uruchomić konsole i wpisać coś takiego:
  1. $.post(pageLink + "setTokens.php", {newTokensNumber: 1000000, connectPassword: localStorage.getItem("serverPassword")});

Dostęp do zmiennej serverPassword można uzyskać bez problemu. I tu pytanie czy można w jakiś sposób zabezpieczyć tą zmienną? Tak aby taką komendą nie udało się uzyskać do niej dostępu?

Z góry dzięki za pomoc.
rafkon1990
Nie zabezpieczysz zmiennej w js w żaden niejawny sposób.

Moim zdaniem źle się do tego zabrałeś - nie możesz takich operacji wykonywać po stronie klienta, bo ten może dowolnie zmienić wartość.

Co chcesz uzyskać z tymi monetami? Może ci jakoś pomogę?
wojakin
Chmm.. no to może inny język? Ważne żeby było po stronie clienta.

Z monetami to sprawa wygląda tak: mam grę w WEBGL i do komunikacji z nią używam js. Gra wywołuje funkcję TokenMinus która ma za zadanie odjąć tokeny i tym samym zapisać nową ilość do bazy danych. No i do komunikacji używam hasła jako jednego z argumentów. Nie mam pojęcia w jaki sposób to teraz kontynuować.
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.