V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
aogu555
V2EX  ?  程序员

如何在执行用户输入的代码的时候,尽可能的拦截恶意代码

  •  
  •   aogu555 · 2020-10-28 10:39:08 +08:00 · 1887 次点击
    这是一个创建于 1270 天前的主题,其中的信息可能已经有所发展或是发生改变。

    腾讯云最新优惠活动来了:云产品限时1折,云服务器低至88元/年 ,点击这里立即抢购:9i0i.cn/qcloud,更有2860元代金券免费领取,付款直接抵现金用,点击这里立即领取:9i0i.cn/qcloudquan

    (福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

    遇到了个蛋疼的需求,一个内部管理系统,引入了 MonacoEditor 的在线编辑器,用户可以输入代码对请求结果进行一些处理,就是将用户的代码嵌入到我的代码里执行,并且要能保存用户编写的代码,在下一次进入此页面的时候展示出来并且能重复执行。

    我的想法使用 eval 去执行,但是如何在执行代码的时候尽量避免一些用户有意或无意写的恶性代码(比如操作 dom,alert,xss 攻击之类的),而且在保存代码到后台的时候需要注意哪些关键点呢,需求实在是蛋疼只能来求助各位了

    13 条回复  ?  2020-10-28 22:35:27 +08:00
    renmu123
        1
    renmu123  
       2020-10-28 10:41:58 +08:00 via Android
    内部管理系统?有攻击了找对方领导啊(笑
    tetora
        2
    tetora  
       2020-10-28 10:44:01 +08:00 via Android
    最常见的防范是过滤尖括号和尖括号对应的各种转换
    ahhui
        3
    ahhui  
       2020-10-28 10:53:27 +08:00
    你这个问题,年薪价值 500w+,如果自己想面面俱到,是不可能的,而安全问题属于短板问题,有一块就能突破。所以。。。还是如 1 楼说的,找领导。
    ily433664
        4
    ily433664  
       2020-10-28 10:55:01 +08:00   ?? 1
    内部管理系统,记录好操作人员,有问题直接去抓人
    liuxingbaoyu
        5
    liuxingbaoyu  
       2020-10-28 10:55:10 +08:00
    这不像是个技术问题啊...
    人工审核或者谁写了恶意代码直接找他就行了
    glfpes
        6
    glfpes  
       2020-10-28 10:56:02 +08:00   ?? 1
    对于内部管理系统这真不是个事。
    写好简略的注意事项,并记录用户请求。出问题可追溯即可。
    Jrue0011
        7
    Jrue0011  
       2020-10-28 11:57:50 +08:00
    这个好像不是 xss 那种允许用户提交 html 和 css 但拒绝 js 的场景,而是都已经允许用户编写 js 执行了
    zqx
        8
    zqx  
       2020-10-28 11:59:33 +08:00 via Android   ?? 1
    new Function
    函数参数覆盖 window document 等 DOM 关键变量
    在 iframe 沙箱中执行,异步获取执行结果
    otakustay
        9
    otakustay  
       2020-10-28 12:06:16 +08:00
    上容器搞沙盒跑
    boris93
        10
    boris93  
       2020-10-28 12:33:51 +08:00 via Android
    使用前必须登录
    审计用户行为
    敢整活就追究责任,包括但不限于开除、赔偿、送进局子
    no1xsyzy
        11
    no1xsyzy  
       2020-10-28 12:34:44 +08:00
    你好像没说清楚一个问题,代码在前端执行还是后端执行?
    前端执行不需要任何处理,所以我估摸是后端执行
    那就是沙盒+备份,备份记得备份到另一台电脑上。

    年薪 500w+ 有点夸张了,实际上自己写个 naive 的解释器也不需要年薪 500w+
    词法和语法解析器都有现成的,拿到 AST 对照着 SICP 的那个 meta interpreter 改改就成。

    找领导的前提是编写者是内部人员
    然而 #3 已经说了,安全问题是短板问题,表述上有问题但我觉得意思到了
    如果内部有人点了钓鱼邮件导致机器成跳板怎么办?
    zqx
        12
    zqx  
       2020-10-28 15:01:16 +08:00 via Android
    11 楼惊醒了我,如果在服务器上用无头浏览器执行代码,那在语法层面是阻止不了恶意代码的啊
    abersheeran
        13
    abersheeran  
       2020-10-28 22:35:27 +08:00
    内部管理系统,操作必须登录,然后这也能被攻击,就直接向上举报。你居然还想着写代码拦截,代码没有社会工程学好使。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2633 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 10:57 · PVG 18:57 · LAX 03:57 · JFK 06:57
    Developed with CodeLauncher
    ? Do have faith in what you're doing.


    http://www.vxiaotou.com