Plugin into a server

Gordon McMillan gmcm at hypernet.com
Wed Feb 16 11:16:33 EST 2000


Szilveszter Juhos writes:
> I want to install new executable objects into a server (running on a 
> remote machine) with a client like:
> 
> class Printer:
>   """
>   This class should run on the SERVER side
>   """
>   def Run(self):
>     print 'dummy message'
> 
> theClient = Connector()
> theClient.SendObject(Printer(),'cmd')
> del theClient
> 
> The idea is that the Connector class implements the interface between the
> server and the client. When I send an object with attribute 'cmd', the
> server side will accept it as an executable object at the server side. I
> can easily trasfer data, but not executable. It is obvious from the
> documentation that pickling/marshaling will not work (at least I could not
> find a way), but what is the way than to send executable objects across
> network? 

Cheap answer: yes, you can use marshal (on the code 
object), or simply transmit source.

Better answer: Think again. It will be very difficult to write code 
on the client that will do anything useful on the server (eg, a 
"print" statement will end up buried in a server log 
somewhere). It will be easy to write code that screws up the 
server accidentally. It will be trivial for a malicious hacker to 
leave your server in ruins.

- Gordon




More information about the Python-list mailing list