Python中文
首页
教程
问答
标签
搜索
登录
注册
为什么在这个代码段中需要eval()?
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我目前正在用python开发一个小项目,使用一个名为“pybtsync”的API层,它为BTSync提供了直接的python访问。我试图通过查看它的源代码来熟悉它,我发现:</p> <pre><code>def _request_function(self, method_name, arguments='', key=None): URL = 'http://' + self._address + ':' + self._port +'/api?method=' + method_name + '&' + arguments request = requests.get(URL, auth=(self._login, self._password)) request_data = eval(request.text) if key is not None: return request_data[key] return request_data </code></pre> <p>我知道BTsync的API以json格式返回。那为什么不是json.load文件(请求.text)不够?我发现在这里使用eval()有一个潜在的安全问题。有什么理由我不明白吗?你知道吗</p> <p>pybtsync的全部代码可以在这里找到: <a href="https://github.com/tiagomacarios/pybtsync/blob/master/pybtsync/pybtsync.py#L239" rel="nofollow">https://github.com/tiagomacarios/pybtsync/blob/master/pybtsync/pybtsync.py#L239</a></p> <p>有关BTSync api的更多上下文: <a href="http://www.bittorrent.com/sync/developers/api" rel="nofollow">http://www.bittorrent.com/sync/developers/api</a></p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>是的,这是一个安全问题;如果我可以更改您的代码使用的DNS服务器或使用中间人服务器,那么我可以向您发送任意Python代码。你知道吗</p> <p>如果API被更新为包含JSON<code>null</code>或布尔值,那么对于常规JSON响应,<code>eval()</code>调用也会失败。你知道吗</p> <p>代码应该改为调用<code>request.json()</code>。你知道吗</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何添加虚拟方法
3 回答
如何添加表示整数的擦边字符串?
7 回答
如何添加要在Bokeh中使用的新font.ttf文件?
3 回答
如何添加要显示的矩阵XY轴编号和XY轴
6 回答
如何添加计数?
4 回答
如何添加计数器函数?
4 回答
如何添加计数器列来计算数据帧中另一列中的特定值?
6 回答
如何添加计数器来跟踪while循环中的月份和年份?
7 回答
如何添加计数并删除countplot的顶部和右侧脊椎?
2 回答
如何添加计时器wx.应用程序更新窗口对象的主循环?
2 回答
如何添加评论到帖子?PostDetailVew,Django 2.1.5
1 回答
如何添加评论拉梅尔亚姆
4 回答
如何添加诸如矩阵Python/Pandas之类的数据帧?
4 回答
如何添加谷歌地点自动完成到Flask?
3 回答
如何添加超时、python discord bot
6 回答
如何添加超过1dp的检查
4 回答
如何添加距离方法
8 回答
如何添加跟随游戏的敌人精灵
4 回答
如何添加路径以便python可以找到程序?
5 回答
如何添加身份验证/安全性以使用happybase访问HBase?
9 回答