我在绞尽脑汁想办法利用这个装置。我的概念是:我的twisted服务器接收消息(通过LineReceiver
)。消息是base64json,应该包含一个字典。{2}客户机操作}的排序应该是哪个。在
在程序的这一部分,line
是通过网络接收的base64字符串。在
def Decode(line):
return json.loads(base64.b64decode(line))
以及解释(在扭曲的Protocol
对象内)
为什么我认为它是安全的:
__str__
访问我收到的内容,对吗?在if instruction["INSTRUCTION"] == "functionA": functionA(self)
行提供可读性较差但更紧凑的替换。我正在运行eval从一个特定的列表中选择一个函数。在这个安全吗?这种风格或形式是否可以接受?由于客户端不可信任,这段代码对于多人游戏是否足够健壮?(稍后验证指令是否符合游戏规则,这里我想保护我的服务器不受破坏性的修补。)
有没有更好的方法来做我正在尝试的(我想是远程执行一个函数)更标准/更安全?在
最好使用
getattr()
:其中,
do_
是在指令名的前缀,以确保只有允许的方法才能通过此方法调用。在如果指令函数位于全局命名空间中,请改用
^{pr2}$globals()
,并将其用作映射:但是,最好将这些可调用项放入显式映射中:
很少需要
eval()
在python名称空间中查找任意对象。在相关问题 更多 >
编程相关推荐