V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
kehr
V2EX  ›  Python

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

  •  
  •   kehr ·
    kehr · 2014-03-20 20:28:46 +08:00 · 4103 次点击
    这是一个创建于 3937 天前的主题,其中的信息可能已经有所发展或是发生改变。
    被人问到这个问题,就这么一句话,没有解释和说明,一时没有头绪。用Python怎样实现这一功能呢?

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

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

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

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

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

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

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

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

    @jeansfish OJ检测输入输出,运行时有严格的限制。
    clino
        16
    clino  
       2014-03-21 11:20:45 +08:00   ❤️ 1
    刚在知乎上看到一个类似的问题: http://www.zhihu.com/question/23067497
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   904 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 20:01 · PVG 04:01 · LAX 12:01 · JFK 15:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.