2015-09-20 12 views
5

Mam prostą grę Canvas w HTML5 i na końcu części chcę przechowywać zmienne w MySQL. Czy można to zrobić za pomocą XMLHttpRequest, Ajax lub czegokolwiek? W ten sposób zacząłem go pisać:Czy można bezpiecznie wywołać plik PHP z JavaScript?

var request = new XMLHttpRequest(); 
request.onreadystatechange = function() { 
    if (request.readyState == 4 && request.status == 200) { 
     var success = request.responseText; 
     alert(success); 
    } 
} 
request.open('GET', 'saveLevel.php?name='+name+'&level='+level, true); 
request.send(); 

Mój problem polega na tym, że każdy może to zrobić w konsoli tak:

var request = new XMLHttpRequest(); 
request.onreadystatechange = function() { 
    if (request.readyState == 4 && request.status == 200) { 
     var success = request.responseText; 
     alert(success); 
    } 
} 
request.open('GET', 'saveLevel.php?name='+name+'&level=100', true); 
request.send(); 

(Jak) mogę go rozwiązać?

+0

Jest tak bezpieczny, jak twój kod PHP i połączenie sieciowe. –

+0

Co według ciebie jest niepewne? Mam wrażenie, że to, o czym mówisz, nie jest tym, co inni ludzie uważają za "bezpieczne". Tak, każdy może zadzwonić na twoją stronę php bez użycia twoich metod. Czy to nie jest bezpieczne? Niezupełnie, ale możesz myśleć, że tak. – epascarello

+1

Musisz trochę zmienić swoją architekturę. Nigdy nie jest bezpieczne, jeśli klient decyduje o wszystkim i sprawia, że ​​serwer jest posłuszny. Będziesz chcieć _potwierdzić_ o tym serwerze i zdecydować, co zrobić. – DeDee

Odpowiedz

4

Można użyć kombinacji uwierzytelniania, zaciemniania i minifikacji aby zapewnić Ci JavaScript Połączenia sieciowe

  • Próbka JS Obfuscator Biblioteka JScrambler

  • Sample JS minifikacji Biblioteka UglifyJS

  • Authentication-

    Zakładam, że twój interfejs API ma jakieś pole uwierzytelniania (np. Hash/Token itp.). Jeśli nie, możesz go zintegrować z - This answer.

    • Upewnij się, że używasz soli (lub nawet klucza API), który jest podany klientowi JS na podstawie sesji. W ten sposób możesz zapobiec nieautoryzowanemu dostępowi.
    • Po stronie serwera zapamiętaj kilka ostatnich wywołań z punktów końcowych, a przed zezwoleniem na kolejną sprawdź, czy teraz logika zezwala na nową.

Jeśli zastosujemy powyższe kroki to na pewno sprawiają, że bardzo bezpieczne.