2015-09-20 8 views
5

Ho un semplice gioco HTML5 Canvas e alla fine di una parte voglio memorizzare le variabili in MySQL. È sicuro farlo con XMLHttpRequest, Ajax o altro? Ecco come ho iniziato a scriverlo:È sicuro chiamare un file PHP da 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(); 

Il mio problema è che tutti possono fare questo in console come questo:

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(); 

(Come) posso risolverlo?

+0

È sicuro come il codice PHP e la connessione di rete –

+0

Cosa pensi che non sia sicuro? Ho la sensazione che quello di cui stai parlando non sia ciò che gli altri pensano che sia "sicuro". Sì, chiunque può chiamare la tua pagina php senza usare i tuoi metodi. È insicuro? Non proprio, ma potresti pensare che lo sia. – epascarello

+1

Avrai bisogno di cambiare la tua architettura un po '. Non è mai sicuro se il cliente decide su qualsiasi cosa e fa obbedire al server. Dovrai _notify_ il server a riguardo e decidere cosa fare. – DeDee

risposta

4

È possibile utilizzare la combinazione di autenticazione, offuscamento e Minification per garantire voi rete JavaScript chiama

  • Esempio JS Obfuscator Biblioteca JScrambler

  • Esempio JS Minification Biblioteca UglifyJS

  • Autenticazione

    Presumo, la tua API ha una sorta di campo di autenticazione (ad es. Hash/Token, ecc.). In caso contrario, è possibile integrarlo con - This answer.

    • Assicurati di utilizzare un salt, (o anche una chiave API) che viene dato al tuo client JS su una base di sessione. In questo modo, puoi impedire l'accesso non autorizzato.
    • Sul lato server, ricordare le ultime chiamate di endpoint e prima di consentirne un altro, controllare se la logica consente il nuovo al momento.

se si segue la procedura descritta sopra sarà certamente rendono molto sicuro.