Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zabezpieczenie zmiennej
wojakin
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 3.12.2016

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


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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
rafkon1990
post
Post #2





Grupa: Zarejestrowani
Postów: 37
Pomógł: 9
Dołączył: 14.09.2016
Skąd: Śląskie

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


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ę?
Go to the top of the page
+Quote Post
wojakin
post
Post #3





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 3.12.2016

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


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ć.

Ten post edytował wojakin 3.12.2016, 18:15:00
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 24.08.2025 - 19:00