Prendi ad esempio un gioco. In genere, quando acquisti o scarichi un gioco che può essere giocato offline, tutti i dati necessari per l'esecuzione del gioco vengono spediti con l'eseguibile. Per proteggere queste risorse, gli sviluppatori utilizzano vari metodi di protezione come password, crittografia, compressione, archivi di file, anti-debugger e così via. Naturalmente, la maggior parte (se non tutti) di questi può essere decodificata se qualcuno dovesse dedicare abbastanza tempo e sforzi a questo.
Ho guardato diversi giochi online e ho scoperto che i giochi basati su browser tendono ad essere molto più sicuri quando si tratta di accesso ai dati non autorizzato. Questo perché (quando possibile) una risorsa viene inviata al client solo quando viene richiesta e un URI ideale utilizza in genere una stringa casuale che è sia impossibile indovinare che impossibile da decodificare.
Ad esempio, supponiamo di avere un'immagine chiamata "duck.png". Poi lo rinominano in una stringa casuale di 64 caratteri, forse casualmente andando alla tastiera. A meno che tu non sia incredibilmente fortunato, non sarai in grado di indovinarlo. Puoi aggiungere ulteriori misure di sicurezza, ad esempio fare in modo che se un IP tenta di richiedere una risorsa non valida più di, ad esempio, 100 volte, il server le sospende automaticamente per un certo periodo di tempo.
Supponendo che la sicurezza sia correttamente impostata su un server (controllo di accesso appropriato, API sicure che controllano correttamente le richieste prima di elaborarle, uso coerente delle stringhe casuali), posso essere sicuro che l'unico modo in cui un estraneo sarebbe in grado di accedere questa risorsa è attraverso mezzi legittimi, come giocare al gioco?
O ci sono tecniche che gli avversari possono usare per accedere (facilmente) alle risorse che sto cercando di proteggere? Presumo che ottenere un accesso non autorizzato a un server non sia un compito facile perché il server è protetto.