如何在执行用户输入的代码的时候,尽可能的拦截恶意代码 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
aogu555
V2EX    程序员

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

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

    遇到了个蛋疼的需求,一个内部管理系统,引入了 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
    最常见的防范是过滤尖括号和尖括号对应的各种转换
    0TSH60F7J2rVkg8t
        3
    0TSH60F7J2rVkg8t  
       2020-10-28 10:53:27 +08:00
    你这个问题,年薪价值 500w+,如果自己想面面俱到,是不可能的,而安全问题属于短板问题,有一块就能突破。所以。。。还是如 1 楼说的,找领导。
    lovelive1024
        4
    lovelive1024  
       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     Solana     2515 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 15:21 PVG 23:21 LAX 07:21 JFK 10:21
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86