From: Dalibor Sramek Date: 2003-01-10T23:49:30+09:00 Subject: Re: Security problems On Fri, Jan 10, 2003 at 05:42:11PM +0900, Tim Bates wrote: > Can anyone else see a way around this? Running the code in a separate process > (like RealTimeBattle does) is not really an option either, because it would > still allow malicious code to damage the system on which it is run, and it > would reduce the ability run tournaments etc safely. I would still argue for separate processes and the client/server model. What you are trying to do is exactly separating a robot controlling code from the world controlling code. If your server implements the hardware part of robots with a well defined interface and the software part is left for clients then every robot writer can change the world status only via the virtual hardware provided by the server. Why do you think that separate processes would break the security? What I imagine is something like this: Server: class Robot def turnLeft(howmuch) check_and_do_something end ..etc end Server accepts connection and for every connection makes an instance of the Robot class (the connection is connected to the class). When the server gets "turnLeft(34)" from the connection it can translate it to appropriate_instance.turnLeft(34). In other words the client can use just a defined set of methods. Client There are many ways to write a client for the described server. Anyway I hope that you work on the robot game will quickly lead to some interesting battles. Regards, Dalibor Sramek -- Dalibor Sramek http://www.insula.cz/dali | In the eyes of cats, dalibor.sramek@insula.cz | all things belong to cats.