【发布时间】:2014-04-16 10:32:06
【问题描述】:
我正在尝试找到一种方法,允许我的用户请求 Python 对象的任意部分,并让服务器返回该数据,而不会意外允许他们请求他们不允许的内容拥有或做他们不被允许做的事情。
例如,假设服务器有这个数据:
my_stuff = {"alpha": ["bravo", "charlie", {"delta": "echo"}], "foxtrot": "golf"}
我想允许用户发送如下 HTTP 请求:
/path/to/my/script/?gimme=my_stuff[alpha][2][delta]
并让请求返回echo。同样,如果gimme=foxtrot,我想返回golf。
我不能把它传递给 eval() 对吗?单独的安全隐患将非常糟糕,但我无法想象性能也非常好。
请求的语法可以完全改变,要求是我允许用户请求服务器端对象的任意部分....但是只是对象,只读。
有没有一种安全/智能的方法可以做到这一点,还是我疯了?
【问题讨论】:
-
你有一个嵌套的对象序列;将路径解析为字符串和整数列表,然后简单地解析该路径。使用字符串和整数访问项目是完全安全的,并且不可利用。
标签: python