-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:
setInterval(getPassword,10000); //Zmiana hasla co 10 sec function getPassword (){ if(login !== undefined){ $.post (pageLink + "getSessionPassword.php", {lastPassword : localStorage.getItem("serverPassword")}, function (password){ //console.log(localStorage.getItem("serverPassword")); if(password=="Error") console.error("Zle haslo"); else localStorage.setItem("serverPassword", password); console.log(password); return 0; } ); } else return -1; }
Skrypt getSessionPassword.php:
<?php if($_POST["lastPassword"] == $_SESSION["sessionPassword"]){ } else ?>
No i skrypt do zmiany ilości monet:
function TokenMinus (tokenNum) { if (tokenNum > 0) { tokens -= tokenNum; $.post(pageLink + "setTokens.php", {newTokensNumber: tokens, connectPassword: localStorage.getItem("serverPassword")}, function (a){ if(a == "Error") console.error("Bad server password"); }); document.getElementById("tokensNum").textContent = tokens; } else console.error("Bledna ilosc tokenów"); }
I wszystko by było fajnie gdyby nie to że przez przeglądarkę można uruchomić konsole i wpisać coś takiego:
$.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.