Original Post
Hello, First let me say that I have 5+ years of programming experience in many of the 'standard' languages used today. However, I have only recently been exploring networking, so please excuse my naivety. Here is a little background: I am working on a very simple text-based MUD type game as a side project--I got into the project in search of new challenges and I certainly found them. Most prominently, I am puzzling over how to ensure communications between client and server are secure (ie, how can I ensure that messages from the client to the server are from a real client and not from some hacker?). Here is my setup: I am working in Java and using NIO for network communications. The game is open source. Messages are constructed and serialized into XML on the client side, then sent to the server. The server deseriallizes the message, performs the necessary processes (such as modifies a player's inventory, moves a player, checks for other players in a particular area, etc.). The resulting Object(s) if any are packed into a response, sent to the client as XML, deseriallized, and used as needed. Here is the problem: Since the game is open source, a destructive individual could create a 'special' client that deletes everyone's inventory (or something). None of the protocols I've looked at seem to prevent this. I've thought of somehow involving a dynamic hash of the client files, but even then a hacker could get the correct hash to send as validation pretty easily... Any thoughts? Suggestions? Web references? I would appreciate a little help! Thanks!