javascript eval(),控制输入&真正的危险
javascript eval(), controlling the input & the real dangers
简介
我目前正在做一个名为draw.js的项目。该项目背后的想法是让一个在线代码编辑器链接到绘图空间,这样你就可以使用代码进行绘图。
当我第一次发现two.js库时,我就有了这个想法。我想马上开始画画,但做不到,因为我必须先设置文件等。只需设置一次文件,然后用旁边的代码编辑器在线托管,就可以更容易地开始了。最重要的是,我可以在任何我想做的地方(学校、家里等(进行操作,而无需随身携带U盘之类的东西。
有了代码编辑器也可以更快地得到结果。所以只有大的优点。
我必须想办法真正运行我放入网络应用程序代码编辑器部分的代码。我在网上做了一些研究,发现最简单的解决方案是获取代码,将字符串放入变量中,然后将变量传递到java脚本中内置的eval((函数中。
我的问题
这个解决方案工作完美,而且设置起来非常容易。然而,网上研究和常识告诉我,这是一个非常不安全的解决方案。
你基本上可以放入任何有效的js,它就会运行。
现在这是像$("body").html("");
这样的东西的问题,但这不是世界末日。这样编辑html功能强大,但仅限于客户端。实际上,您可以通过在chrome中打开开发工具来做到这一点。
我的问题
我自己想不出这个安全漏洞有什么严重的问题。然而,我并不是这方面的专家。这就是我问这个问题的原因。
以这种方式使用eval((是否存在真正的危险?这些危险是什么
如果有。。。
有办法解决这个安全漏洞吗也许只允许访问某些库的?
如果有办法解决这个问题,请告诉我我将如何解决它
假设我是您的酷炫web应用程序的超级合法用户,对自己进行了身份验证,并编写了您(作为应用程序的开发人员(想要运行的酷炫脚本。当然,作为超级用户,你可以比作为简单用户的我做得更多。我嫉妒你的权利。
编写一个脚本应该不会太难,当执行时:
- 伪造代码输入,使其看起来像不是
- 获取您的身份验证对象并将其发布到另一台服务器
- 从系统中获取更多可用信息(请参阅https://github.com/Valve/fingerprintjs2)
除了这些隐私问题之外,它还可以从流氓网络加载广告,这些网络有能力在你和其他用户的系统上注入病毒。
基本上就是不信任任何用户代码。如果您想执行用户提交的代码,请小心,它只能访问有限的范围。这样的东西(沙盒(只能更改页面的特定部分。有关可用于实现此目的的库的特定示例,请参阅https://github.com/asvd/jailed.
我的建议是在RegEx中设置一个白名单模式。例如,您可能不希望使用包含特定模式的javascript命令,例如''"|''''等。白名单的列表可能比黑名单的列表短得多。
- jquery点击函数select&取消选择
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- Angular js-返回一个包含类似
- 一点javascript元编程&可链接的设置器
- 通过JSON&比较时间
- Jquery模板,如果xx&&如果yy
- jQuery工具验证器自定义效果-添加&消除影响
- Twitter引导程序Typeahead-Id&标签
- AngularJS&JSON-从Previous&下一个对象
- 什么是&&在没有if的行中的变量之间
- 关于引入外部javascript文件的问题&css通过https
- 指令的模板必须只有一个根元素:With restrict E&替换true
- 使用ajax的服务器端分页&jQuery
- Javascript,如果条件在没有&&逻辑运算符当&&它不起作用
- 如何使用dropzone&vueJs
- 如何准确执行加载脚本&退出弹出窗口
- 如何添加CSS&JavaScript进入Windows窗体应用程序C#.net
- Solr查询以按日期月份获取数据&年
- 显示&作为&在jsp中使用angularjs而不使用ng-bind-html
- javascript eval(),控制输入&真正的危险