怎样检测上传到服务器代码的安全性?

2014-03-20 20:28:46 +08:00
 kehr
被人问到这个问题,就这么一句话,没有解释和说明,一时没有头绪。用Python怎样实现这一功能呢?

如果你被问道这个问题,你会怎么回答呢?
4080 次点击
所在节点    Python
16 条回复
zzNucker
2014-03-20 20:54:16 +08:00
完全没懂。
所谓安全离不开环境。
loading
2014-03-20 21:16:02 +08:00
是部署代码还是用户自己上传的?

部署代码?听说过漏洞吧,谁都难以避免。
用户上传?如果是python代码,为什么在服务器运行!

#最小权限
niseter
2014-03-20 21:18:47 +08:00
没法检测,一般只能看有无危险的函数,以及运行时的权限,最好的检测就是人肉(比如水果)
halfbloodrock
2014-03-20 21:39:21 +08:00
对OS来说,部署入侵检测,比如ossec, AIDE等。监控这些代码是不是对OS做了不安全操作。
Comphuse
2014-03-20 21:45:04 +08:00
ericls
2014-03-20 21:57:31 +08:00
用户上传代码干麽?
不给执行权限?
kehr
2014-03-20 22:38:48 +08:00
@zzNucker
@loading
@ericls

按照提问人的意思,代码是用户上传的。我当时也没搞明白,既然是用户上传的,为什么要让他运行?就算能运行,难道要运行时检测么?这样的话每段正在运行的代码都要被监视,显然是不合理的。

既然这样,简化一下问题。

如何检测一段在服务器上运行的代码潜在的危害? Python解决。
binux
2014-03-20 22:51:43 +08:00
ast?检测它能访问什么接口?
slixurd
2014-03-20 23:01:43 +08:00
各种在线判题系统就是给用户上传的程序自动运行的...
wy315700
2014-03-20 23:16:43 +08:00
@slixurd 判题系统是通过ptrace监控系统调用来保证安全性的,
除了标准输入输出以外的一切系统调用都是被禁止的
oott123
2014-03-20 23:59:55 +08:00
用户上传的,进沙盒,完事了删掉?
wwqgtxx
2014-03-21 05:58:41 +08:00
参考gse/sae/bae的逻辑用沙盒
dndx
2014-03-21 10:20:16 +08:00
停机问题,在真正运行之前,你永远无法得知程序是否有害。

在沙盒里无害并不代表在真实环境里也无害,除非你的运行环境就是沙盒。

在这种情况下,人肉检查还是最靠谱的。
jeansfish
2014-03-21 10:30:45 +08:00
看看各种oj?
kehr
2014-03-21 10:40:39 +08:00
@dndx 「人肉检查」是人手工检查吧? 如果代码量非常大,除了沙盒,会有更好的解决方案么?

@jeansfish OJ检测输入输出,运行时有严格的限制。
clino
2014-03-21 11:20:45 +08:00
刚在知乎上看到一个类似的问题: http://www.zhihu.com/question/23067497

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/105179

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX