Det kan ikke lade sig gøre at sige noget definitivt om den klient du taler med (hvis du finder en løsning, så ring til blizzard og scor kassen). Alle online spil bøvler med den slags problemer. Det bedste bud er at indføre nok "security through obscurity" til at det ikke er bøvlet værd at arbejde sig igennem det. Du må dog ikke lade disse teknikker stå for "adgangskontrol", de bør kun bruges til at gøre det svært at lave alternative klienter.
Et par forslag til at gøre det bøvlet at lave en alternativ klient:
- Implementer din protokoltolkning/styring således at du let kan skifte hvordan de datastrukturer der sendes sker ud. Kan laves sådan at et build script random kan vælge forskellige faktorer, fx rækkefølge på data, navne hvis det er en tekst protokol osv. (Vigtigt at browseren gøres opmærksom på at en cachet applet ikke skal genbruges i det tilfælde)
- Lad webserver og jeres applikationsserver samarbejde. Requests godkendes kun hvis siden er blevet tilgået inden for en hvis tid. Din webserver kan også generere forskellige kodestrenge som parametre til appleten som den skal sende med ned. Formattet, navnet, antallet på disse kan også ændres ofte ligesom ovenstående
- Lad klienten autorisere med en kode-streng, fx et krypteret digest af username,password, en streng fra serveren og et timestamp. Ganske vist kan man decompile klienten, men du kan gøre det til et rigtigt træls job at finde ud af hvilken krypteringsnøgle og algoritme der anvendes. Du kan fx selv skrive små kode-stumper i bytekode som der ikke findes nogen java ævkivalens til. En del af genereringen kan måske udføres af et indlejret script sprog og script fortolker. Igen, det kan læses, men bestemt ikke noget hurtigt og let job. Se fx et script sprog som
http://www.daimi.au.dk/~eriksoe/Flip/index.html :) ikke sjovt at finde ud af hvad alt sådan noget går ud fra ud fra noget obfusceret kode.
Det kan du så bruge en masse tid på =) Men igen, det her er kun en højere barriere for 3rd party apps. Brug det hvis du vil nedsætte risikoen for at folk laver deres egen klient, fx hvis det ville kunne give dem en fordel i et spil. Det duer ikke som grundlæggende sikkerhed. Se evt.
http://en.wikipedia.org/wiki/Security_through_obscurity