[casual_games] Platform for multi-player Flash games
Morbus Iff
morbus at disobey.com
Tue Oct 18 13:41:10 EDT 2005
> About security - I'm guessing you're asking about if we wrap your SWF
> somehow to protect it from decompilation? The answer to right now is
> No, we don't touch your swf, so it's the developer's responsibility to
> obfuscate or otherwise protect their code. This is primarily because
> we haven't found a good, automated way to do this - if anyone has any
> pointers to possible solutions, they would be much appreciated.
I've been fighting this in my own designs, which:
* all non-writable gameplay data comes from a remote database.
* user statistics, writable, are sent from client to database.
Just like high scores, only more so (in my case, I'd be sending back
logfiles too, which would help me with debugging, rooting out powerful
objects, and cheating - two players would send back the same logfile, and
if they didn't match, we can't trust one of those clients/users).
Ultimately, I've yet to devise a super spiffy way - some folks have
suggested a PGP like key system, but I don't think I want to go that
crazy. Some things I've thought about:
* Client is hardcoded with URL and password. Decompilable.
* Client is hardcoded with URL, and asks server for a key. Client
then sends key to server for any writable updates. The app would
still be decompilable, however, so that someone could still find
the URL, issue their own key request, then data insertion.
* Key/password is sent along with a normal data client data request
- there's no separate request or special URL. Ultimately, this
becomes security by obfuscation, and was abandoned solely on
that principle.
At this point, the thing I finally settled on was that there's no way
around the reverse engineering issue, thus, simply and obviously, rely on
stronger and automated server checking: compare multiple player logfiles
(as above - two players play against each other, both clients keep
accounting logs, and if the logs are different, one client has done
something naughty) and, should something look suspicious, immediately flag
both accounts as suspended until an admin can look at it. And the basics:
any write requests from the client would use both the user's own game name
and password (as opposed to a fake-able generated key or password), anal
data checks (this number may never be about 5, no player can ever win
within 5 turns, no play counts can ever exceed game turn count, only one
player can win, etc.). I've yet to devise a bunch of checks for two
players working in tandem (faking BOTH logfiles) but, for this particular
game, I'm not entirely sure if that would create an exploitable hole.
--
Morbus Iff ( you are nothing without your robot car, NOTHING! )
Culture: http://www.disobey.com/ and http://www.gamegrene.com/
O'Reilly Author, Weblog, Cook: http://www.oreillynet.com/pub/au/779
icq: 2927491 / aim: akaMorbus / yahoo: morbus_iff / jabber.org: morbus
More information about the Casual_Games
mailing list