L'offuscamento potrebbe sembrare il primo passo ovvio, ma l'offuscamento deve proteggere qualcosa nel codice e che qualcosa non può essere funzionalità del servizio web perché viene decodificato intercettando il traffico anche se è crittografato con SSL. Il blocco dei certificati può impedire l'intercettazione SSL semplice affidandosi a un certificato predefinito.
Puoi crittografare simmetricamente i dati di comunicazione e memorizzare la chiave nel client quindi utilizzare l'offuscamento per rendere più difficile l'accesso a tale chiave e all'algoritmo di crittografia. E puoi anche proteggere l'offuscamento rendendo più difficile la decompilazione. Un esempio di flash offfuscator e anti-decompilatore è SWFencrypt e BISguard .
I precedenti sono protezioni del codice sorgente statico ma non proteggono da attacchi live / dinamici. Un modo per proteggere da questi attacchi è che il client usi controlli di integrità su memoria e risorse. Ci sono anche alcune tecniche di reverse engineering che possono rendere più difficile il debug live.
L'altro modo per prevenire attacchi dal vivo è utilizzare un software che cerchi eventuali manomissioni del sistema che potrebbero essere utilizzate per la manomissione del software client. Questo è il regno dei motori anti-cheat di rootkit come Punkbuster, Warcraft's Warden e Valve's VAC.
Un diverso tipo di protezione è la firma del codice e la firma della memoria (fino alla pagina di memoria) su piattaforme chiuse come iOS e Android. In questo modo, puoi limitare le modifiche statiche a quelle binarie e dinamiche del client alla sua memoria e al sistema operativo.
Anche il vecchio CAPTCHA può essere utilizzato come protezione contro l'automazione, ma danneggia la facilità d'uso. È inoltre possibile rilevare l'automazione sul server, attraverso il comportamento degli utenti e i modelli di utilizzo, quindi accoppiarli con CAPTCHA per ridurre i falsi positivi.
Oltre alle protezioni tecniche, puoi usare con mezzi legali e persino incentivi. Fornisci il miglior cliente in modo che gli utenti non siano inclini a modificare i tuoi oa scrivere i propri. Oppure fai in modo che un cliente personalizzato o hackerato non dia un vantaggio molto maggiore all'hacker. I mezzi legali non sono la mia forza e variano in base al paese, ma ho sentito parlare di azioni legali sul reverse engineering. La minaccia legale potrebbe scoraggiare le aziende e gli individui dalla vendita o dalla fornitura di clienti personalizzati.
Infine, è possibile capovolgere l'intero problema e rendere il servizio web facilmente accessibile tramite API flessibili e proteggerlo dagli abusi sul server. Potresti anche addebitare piccole commissioni per la funzionalità superiore che i tuoi hacker desiderano. :)