我们有一个网站,允许用户上传自己的JavaScript,该网站会加载该网站的页面。问题是如果用户添加恶意脚本(例如键盘记录器)。任何人都可以提供关于如何处理这个问题的想法吗?如何在允许用户上传自己的JS时处理恶意JS
4
A
回答
2
哇,你正在创造一个攻击者的游乐场!如果你让用户(攻击者)上传自己的JavaScript,那么他可以做很多恶意的事情。
我不同意那些正在讨论扫描JavaScript病毒的人。防病毒软件在软件中搜索已知的错误签名,主要针对已影响到大量人员的恶意软件。请记住:反病毒软件检查的每个签名都是许多人工小时对已知威胁进行分析的结果。它不检测零日威胁!当您让用户编写自己的JavaScript时,他不会受限于这些已知的错误签名。他可以做他想做的任何事情,而且反病毒软件无法判断发生的事情是否是恶意的或是商业逻辑打算的。
让我们先来说明一些担忧,如果你允许用户(=攻击者)上传自己的JavaScript:
- 除非你把仅Http在所有的饼干,攻击者就可以阅读。例如,他可能会劫持会话。
- 攻击者可以读取键盘和鼠标事件。例如,他可能会窃取用户密码。
- 如何防止跨网站请求伪造?通过让攻击者上传他自己的JavaScript,他可以绕过你的保护并执行他想要的任何行动。例如,他可以创建一个DoS攻击,让每个用户上传他选择的内容。然后,每当有人进入您的服务器,加载一个页面就会花费很长时间,因为在发生任何事情之前,需要下载过多的JavaScript。
- 攻击者可以读取任何其他人的DOM并将其发送到任何地方。如果DOM中有任何私密或敏感的东西,攻击者就拥有它。
- 攻击者可以通过警报或其他各种方法阻止任何其他用户。
如果你愿意,你可以玩猫捉老鼠游戏:你提出一种方法来防止我上面提到的问题,然后告诉你攻击者可以绕过它,然后你改变你的解决方案,然后我改变我的攻击,等等。您可能能够防止某些事情,但是无法防止所有的攻击。安全很难!
底线:不要这样做!
相关问题
- 1. 允许用户上传HTML/JS文件的风险
- 2. 允许用户/管理员自己更新内容管理
- 3. 如何使用自己的js作为插件使用nuxt js
- 4. 如何处理恶意网页请求
- 5. 如何处理恶意URL(xyz.com/*)
- 6. 允许用户使用YouTube API a上传到他们自己的频道
- 7. 当用户点击“不允许”时如何处理Facebook授权
- 8. 反应js处理文件上传
- 9. Angular JS文件上传内容处理
- 10. 如何使用sequelize + mysql + express js处理文件上传?
- 11. 允许用户上传任何东西
- 12. 允许用户在shopify上传图片
- 13. 允许用户上传视频在WordPress
- 14. 恶意的js会自动注入到我的header.php文件和许多其他js文件中?
- 15. 允许用户只管理他们自己帖子上的评论
- 16. 恶意js?或者它是什么
- 17. 如何防止在Node.js中执行恶意* .js脚本
- 18. 在Jenkins上,允许用户处理他们自己的凭据但不是全局的
- 19. Symfony2 - 允许用户使用自己的Google帐户登录
- 20. 如何处理JS错误
- 21. JS验证允许空间
- 22. 的Joomla:允许用户上传图片
- 23. Agilezen是否允许您上传自己的积压?
- 24. 允许用户删除自己的帐户 - Authlogic
- 25. 允许用户在Django中删除自己的注释
- 26. 允许用户在PHP中添加自己的水印
- 27. 恶意文件上传
- 28. 如何在SharePoint中为匿名用户允许文件上传
- 29. 如何允许用户上传到s3,但不使用自己的服务器资源
- 30. SonataMediaBundle:允许用户上传链接
网页编程最佳实践:永远不要相信用户 - 嗯,你可以将一个反病毒鞭打到你的应用程序堆栈中,以检查js是否是恶意的或不是。 –
[This](http://stackoverflow.com/questions/17765017/check-upload-file-for-virus-in-mvc3)可能会帮助你。但据我所知,杀毒软件无法检测到Javascript键盘记录。 – mmushtaq
很难说用户提交的JS是合法或恶意的脚本,为了避免XSS,你可以使用'append'或'prepend'方法和自定义函数一起来过滤上传的数据。 –