Skip to main content
 首页 » 编程设计

python之检查 Python 代码中的某些语句

2025年05月04日16lyj

我正在开发一个允许用户在我们的系统上运行他们的代码的系统。虽然他们的代码是沙箱化的,但我仍然想知道他们的代码是否使用了某些语句,尤其是导入。这用于快速检查恶意代码或违反平台准则的代码,它不会是唯一的检查,因为代码稍后也会由人工检查,但最好自动过滤掉最坏的情况.

那么在不执行代码的情况下检查他们的代码是否导入 sys(或 sys 的一部分)的最佳方法是什么?我希望有比正则表达式搜索该代码更好/更好的方法。

奖金问题:更复杂的陈述呢?例如从模块 bar 调用 foo?

编辑:这不是关于安全的问题。它是关于在代码中找到某些语句。看我的评论。这个用户代码只会在用户沙箱内运行,所以他们可以毁掉他们自己的沙箱。但是,如果他们的代码获得“认证”,它就可以在其他用户沙箱中运行,在获得认证之前需要对其进行检查。如果自动检查可以发现最严重的违规行为,那将会很有帮助。

请您参考如下方法:

我真的不会费心尝试做这种人工沙箱,因为

1024 ** 1024 ** 1024 

仍然会咬住你的解释器。

甚至这个

eval("__vzcbeg__('gvzr').nfpgvzr()") 

如果你想要一些安全性,请查看 pypy 的 sandbox它是运行不受信任的 python 代码的最安全方式。有一些只有 python 的模块,比如 pysandbox但我个人建议使用 pypy 沙箱。