对于一个类项目,我们正在创建一个web项目,用户可以上传一个ai脚本(python代码)来玩游戏。我已经完成了文件上传部分,但我关心的是安全性和防止恶意代码。
如何防止用户将恶意代码上传到应用程序?
发布于 2015-03-05 02:05:55
重新生成是沙箱方法的活生生的例子。
发布于 2015-03-05 02:28:23
我建议您不要使用关键字进行过滤。有更可靠的方法来阻止恶意代码。我编写了这个小片段来说明恶意代码如何可能绕过字符串过滤过程:
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()恶意编码者经常想出非常有创意的规避安全的方法。这是一个非常简单的例子,说明比我聪明的人能做到什么。
修正案:
我在这个网站上发现了一些相关的问题:
发布于 2015-03-05 23:57:42
在语言级别进行沙箱几乎是不可能的,因此您有两个选项:
https://stackoverflow.com/questions/28868693
复制相似问题