La verifica della correttezza di un'applicazione di gioco di puzzle con vincoli temporali deve essere eseguita sul lato server?

0

Sto lavorando su un'applicazione in cui un utente deve completare un puzzle e controllare entro un determinato limite di tempo.

Questo è un gioco basato su HTML5, non riesco a mantenere la soluzione sul lato client. ma voglio anche evitare la latenza causata quando controlliamo la correttezza del tentativo del giocatore.

C'è un modo per verificare la correttezza della soluzione sul lato client in sicurezza?

Un'implementazione che stavo considerando consisteva nel prendere l'hash della soluzione e confrontarla con l'hash della soluzione dell'utente sul lato client e una volta che l'ha infine inoltrata, ricontrollarla sul lato server.

Qualche potenziale difetto qui o sono i loro modi più puliti per realizzare lo stesso?

    
posta Amogh Talpallikar 06.08.2014 - 17:51
fonte

2 risposte

1

Se decidi di adottare una soluzione sul lato del cliente, devi essere preparato per il fatto che qualcuno crackerà l'hash o qualsiasi altra cosa tu decida di fare. Se questa vittoria / perdita di puzzle non viene registrata in un tabellone più grande che viene conservato tra i giochi, allora puoi farlo perché non avrà alcun impatto su di te se imbroglia.

Se hai intenzione di registrarli in una classifica o qualcosa di simile all'integrità del punteggio è fondamentale. Dovrai postback della pagina sul server e controllarla lì. Non proverei nemmeno a farlo con ajax dato che l'utente può catturare i dati che si stanno inviando e, in base a quali variabili si stanno inviando, modificarli per essere un vincitore.

Potresti anche fare un controllo client-side, e solo se vincono ripubblicare la pagina e ricontrollare che in realtà ha vinto. Se perdono, non c'è bisogno di postback poiché non c'è nulla da ricontrollare.

    
risposta data 06.08.2014 - 21:18
fonte
1

A seconda del puzzle è possibile utilizzare un controllo di soluzione basato su regole. Quindi per un puzzle di sudoku non si elencerebbe esplicitamente il valore di ogni quadrato, basta controllare che ogni colonna, riga e sezione 3 per 3 abbiano esattamente un'istanza ogni numero da uno a nove.

    
risposta data 06.08.2014 - 18:51
fonte

Leggi altre domande sui tag