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:
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
session_start(void);
if($_POST["lastPassword"] == $_SESSION["sessionPassword"]){
$_SESSION["sessionPassword"] = rand(11111111111, 999999999999999999999);
echo $_SESSION["sessionPassword"];
}
else
echo "Error";
?>
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.