2017-05-08 16 views
4

我们有一个网站,允许用户上传自己的JavaScript,该网站会加载该网站的页面。问题是如果用户添加恶意脚本(例如键盘记录器)。任何人都可以提供关于如何处理这个问题的想法吗?如何在允许用户上传自己的JS时处理恶意JS

+0

网页编程最佳实践:永远不要相信用户 - 嗯,你可以将一个反病毒鞭打到你的应用程序堆栈中,以检查js是否是恶意的或不是。 –

+0

[This](http://stackoverflow.com/questions/17765017/check-upload-file-for-virus-in-mvc3)可能会帮助你。但据我所知,杀毒软件无法检测到Javascript键盘记录。 – mmushtaq

+0

很难说用户提交的JS是合法或恶意的脚本,为了避免XSS,你可以使用'append'或'prepend'方法和自定义函数一起来过滤上传的数据。 –

回答

2

哇,你正在创造一个攻击者的游乐场!如果你让用户(攻击者)上传自己的JavaScript,那么他可以做很多恶意的事情。

我不同意那些正在讨论扫描JavaScript病毒的人。防病毒软件在软件中搜索已知的错误签名,主要针对已影响到大量人员的恶意软件。请记住:反病毒软件检查的每个签名都是许多人工小时对已知威胁进行分析的结果。它不检测零日威胁!当您让用户编写自己的JavaScript时,他不会受限于这些已知的错误签名。他可以做他想做的任何事情,而且反病毒软件无法判断发生的事情是否是恶意的或是商业逻辑打算的。

让我们先来说明一些担忧,如果你允许用户(=攻击者)上传自己的JavaScript:

  • 除非你把仅Http在所有的饼干,攻击者就可以阅读。例如,他可能会劫持会话。
  • 攻击者可以读取键盘和鼠标事件。例如,他可能会窃取用户密码。
  • 如何防止跨网站请求伪造?通过让攻击者上传他自己的JavaScript,他可以绕过你的保护并执行他想要的任何行动。例如,他可以创建一个DoS攻击,让每个用户上传他选择的内容。然后,每当有人进入您的服务器,加载一个页面就会花费很长时间,因为在发生任何事情之前,需要下载过多的JavaScript。
  • 攻击者可以读取任何其他人的DOM并将其发送到任何地方。如果DOM中有任何私密或敏感的东西,攻击者就拥有它。
  • 攻击者可以通过警报或其他各种方法阻止任何其他用户。

如果你愿意,你可以玩猫捉老鼠游戏:你提出一种方法来防止我上面提到的问题,然后告诉你攻击者可以绕过它,然后你改变你的解决方案,然后我改变我的攻击,等等。您可能能够防止某些事情,但是无法防止所有的攻击。安全很难!

底线:不要这样做!

相关问题