遇到了个蛋疼的需求,一个内部管理系统,引入了 MonacoEditor 的在线编辑器,用户可以输入代码对请求结果进行一些处理,就是将用户的代码嵌入到我的代码里执行,并且要能保存用户编写的代码,在下一次进入此页面的时候展示出来并且能重复执行。
我的想法使用 eval 去执行,但是如何在执行代码的时候尽量避免一些用户有意或无意写的恶性代码(比如操作 dom,alert,xss 攻击之类的),而且在保存代码到后台的时候需要注意哪些关键点呢,需求实在是蛋疼只能来求助各位了
1
renmu123 2020-10-28 10:41:58 +08:00 via Android
内部管理系统?有攻击了找对方领导啊(笑
|
2
tetora 2020-10-28 10:44:01 +08:00 via Android
最常见的防范是过滤尖括号和尖括号对应的各种转换
|
3
0TSH60F7J2rVkg8t 2020-10-28 10:53:27 +08:00
你这个问题,年薪价值 500w+,如果自己想面面俱到,是不可能的,而安全问题属于短板问题,有一块就能突破。所以。。。还是如 1 楼说的,找领导。
|
4
ily433664 2020-10-28 10:55:01 +08:00 1
|
5
liuxingbaoyu 2020-10-28 10:55:10 +08:00
这不像是个技术问题啊...
人工审核或者谁写了恶意代码直接找他就行了 |
6
glfpes 2020-10-28 10:56:02 +08:00 1
对于内部管理系统这真不是个事。
写好简略的注意事项,并记录用户请求。出问题可追溯即可。 |
7
Jrue0011 2020-10-28 11:57:50 +08:00
这个好像不是 xss 那种允许用户提交 html 和 css 但拒绝 js 的场景,而是都已经允许用户编写 js 执行了
|
8
zqx 2020-10-28 11:59:33 +08:00 via Android 1
new Function
函数参数覆盖 window document 等 DOM 关键变量 在 iframe 沙箱中执行,异步获取执行结果 |
9
otakustay 2020-10-28 12:06:16 +08:00
上容器搞沙盒跑
|
10
boris93 2020-10-28 12:33:51 +08:00 via Android
使用前必须登录
审计用户行为 敢整活就追究责任,包括但不限于开除、赔偿、送进局子 |
11
no1xsyzy 2020-10-28 12:34:44 +08:00
你好像没说清楚一个问题,代码在前端执行还是后端执行?
前端执行不需要任何处理,所以我估摸是后端执行 那就是沙盒+备份,备份记得备份到另一台电脑上。 年薪 500w+ 有点夸张了,实际上自己写个 naive 的解释器也不需要年薪 500w+ 词法和语法解析器都有现成的,拿到 AST 对照着 SICP 的那个 meta interpreter 改改就成。 找领导的前提是编写者是内部人员 然而 #3 已经说了,安全问题是短板问题,表述上有问题但我觉得意思到了 如果内部有人点了钓鱼邮件导致机器成跳板怎么办? |
12
zqx 2020-10-28 15:01:16 +08:00 via Android
11 楼惊醒了我,如果在服务器上用无头浏览器执行代码,那在语法层面是阻止不了恶意代码的啊
|
13
abersheeran 2020-10-28 22:35:27 +08:00
内部管理系统,操作必须登录,然后这也能被攻击,就直接向上举报。你居然还想着写代码拦截,代码没有社会工程学好使。
|