securty javascript: una chiamata AJAX per registrare la risoluzione dello schermo dell'utente, è possibile evitare che i numeri falsi?

StackOverflow https://stackoverflow.com/questions/908283

Domanda

Questa è una domanda javascript di sicurezza: supponiamo che una pagina scopre la risoluzione dello schermo del computer, come ad esempio 1024 x 768, e si desidera utilizzare una chiamata AJAX per accedere questi dati nel DB

.

C'è un modo per evitare che i dati in realtà finto di essere inserito nel DB? Credo che qualunque sia il codice HTML o Javascript fa, l'utente può decodificare il codice in modo che alcuni numeri falsi vengono inseriti nel database, oppure c'è un modo impedire che accada tutto? (Sicuro al 100%).

Aggiorna : o in una situazione simile ... se scrivo un gioco semplice javascript ... c'è un modo per l'utente di inviare di nuovo il punteggio da AJAX e mentire sulla loro punteggio?

È stato utile?

Soluzione

Se si inizia con il presupposto che l'utente si sta comunicando con è dannoso, allora no; non c'è niente che puoi fare per controllare quali dati che si passa. Certamente non con certezza al 100% -. Nel peggiore dei casi, possono utilizzare strumenti di rete per riscrivere o sostituire qualsiasi contenuto "corretta" con tutto quello che vogliono

Se si desidera solo per evitare malizia casuale, si potrebbe offuscare o crittografare il codice e / o dati. Questo non scoraggiare un aggressore determinato.

Se effettivamente fiducia che l'utente reale, ma il sospetto che altri potrebbero tentare di impersonare loro, è possibile utilizzare altre tecniche come un canarino dinamica: invia all'utente un numero casuale, e in caso di ritorno che lo stesso numero a te, sai che in realtà è venuto da loro. (O sei stato colpito da un attacco di tipo man-in-the-middle, ma hey,. È questo che SSL è per)

Altri suggerimenti

Non è possibile impedire agli utenti di inviare qualsiasi numero a loro piace di ritorno da JavaScript.

Credo che la migliore che si possa fare è fare una sorta di controllo sul lato server per assicurarsi che i numeri rispediti sembrano una risoluzione realistica.

Non sono sicuro perché qualcuno dovrebbe spendere il tempo per falsificare i numeri in primo luogo però.

Sì, lei ha ragione. Dal momento che si sta utilizzando codice lato client, si deve dire al del computer dell'utente (e quindi l'utente) in un modo o nell'altro, qualunque sia la crittografia o offuscamento che si sta utilizzando. Non c'è modo intorno ad esso.

Per la risoluzione, sarebbe praticamente impossibile determinare se si tratta di risoluzione valida. La mia decisione è di solito inviata al server di 5120 x 1600, che sembra abbastanza irrealistico, ma è perché i 2 schermi sono spesso inviati come 1. In caso contrario, v'è una tale una grande varietà di possibilità di risoluzioni dello schermo e le configurazioni dello schermo, è' d probabilmente rimuovere un sacco di quelli validi, anche se potrebbero essere pochi.

Per il punteggio del gioco, si potrebbe fare ulteriori controlli che rendono più complicato da controllare. Cose come l'invio di più avvisi del punteggio per tutta la partita e che richiedono un numero X di assicurare che il punteggio ottenuto è valido. (IE, deve ricevere uno tra i 200-300, 400-500, 700-800 e quindi il punteggio finale di 1000.) Con il punteggio finale, si potrebbe anche avere un qualche tipo di valore criptato che può essere utilizzato solo una volta o che contiene alcuni dati con un CRC su di esso. In sostanza, alla fine, richiede la ricezione di altri dati che solo il punteggio, in particolare per i punteggi più alti.

Per tentare una risposta elaborando sui commenti fatti da Dok, e voi stessi, v'è una chiara distinzione tra la manipolazione di un'applicazione a 'imbrogliare' fuori di qualcosa, sia che si tratti di un business online per ottenere qualcosa di più economico o un MMPORG per ottenere più esperienza, che manipolare in modo tale da rendere l'interfaccia non correttamente e diminuisce l'esperienza complessiva dell'utente per quella particolare (pirata?) dell'utente.

Il vostro tempo sarebbe speso meglio concentrarsi su altri aspetti del tuo sito. Non consiglio gli utenti del mio sito manipolare il codice HTML per farlo sembrare divertente sulle loro macchine, ma io non ho intenzione di andare tutti fuori e offuscare la mia uscita del server per impedire loro di farsi del male. Nel tuo caso, compresa la verifica contro valori di sicurezza predefiniti, facendo uso del DB, al fine di garantire l'utente sta visualizzando con una risoluzione di 'permesso' mette peso inutile per la vostra applicazione, e richiede tempo per farlo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top