防止用户上载的代码执行恶意任务

时间:2015-03-05 01:59:50

标签: python django django-1.7

对于一个类项目,我们正在创建一个Web项目,用户可以上传一个ai脚本(python代码)来玩游戏。我已完成文件上传部分,但我担心安全性并防止恶意代码。

如何阻止用户将恶意代码上传到应用程序?

3 个答案:

答案 0 :(得分:3)

我建议您远离按关键字过滤。有更可靠的方法来阻止恶意代码。我写了这个小片段来说明恶意代码如何可能绕过字符串过滤过程:

test = """
def f():
    import os
    print((os.name))
f()
"""
obfus = []
for c in test: obfus.append(chr(ord(c) + 1))
obfus = ''.join(obfus)
obfus.replace("os", "**")
def hidden_things():
    print_os = []
    for c in obfus: print_os.append(chr(ord(c) - 1))
    exec(''.join(print_os))
hidden_things()

恶意程序员经常提出非常有创造性的方法来规避安全。这是一个非常简单的例子,说明了比我更聪明的人能够完成的事情。

<强>修订:

我在这个网站上发现了一些相关的问题:

答案 1 :(得分:2)

  • 使用PyPy创建一个python沙箱和/或
  • 扫描并删除潜在危险的类导入(fs,system..etc)

repl是沙箱方法的实例。

答案 2 :(得分:0)

在语言级别进行沙盒几乎是不可能的,因此您有两种选择:

  1. 使用像VirtualBox这样的虚拟化层或者像Google Native Client,LXC或Docker这样更轻量级的东西来沙盒化Python进程。
  2. 使用为您执行此操作的服务,例如http://repl.it/api