2012-04-23 57 views
9

今天早上我醒来时发现了一个运行KnockoutJS,jQuery和Underscore.js的项目的JavaScript警报。它说“我可以在用户的​​浏览器上运行我选择的任何JavaScript”。我下载的唯一第三方JavaScript是Typekit,删除它并不会使其消失。我搜索了我的JavaScript和供应商的JavaScript,并且此字符串不会匹配任何内容。我在我的项目中收到JavaScript警告,我没有创建,威胁我?

您将如何解决这个问题和/或这是已知发生的事情?

+11

这是注射不是在你的JS,但在你的数据库:)你没有消毒用户的输入数据 – fl00r 2012-04-23 14:38:54

+1

你是否进口任何广告或类似的东西?如果没有真正查看网站,可能无法说出来。 – Pointy 2012-04-23 14:39:01

+7

算你自己幸运,他们对此很好,可能会更糟 – 2012-04-23 14:40:28

回答

14

如果您的应用程序有数据库,那将是下一个要检查的地方。我猜测有人发现并利用了一个注入漏洞(未经过消毒的HTML输入或SQL),并通过数据库将脚本注入到页面中。

最后一个地方是查看ruby代码,看看恶意用户是否修改了源代码。

+4

它可能不是sql注入,只是unsanitized html注入。 – JayC 2012-04-23 14:43:49

+1

@JayC - 是在编辑它的过程中,当你评论。由于某种原因,我无法弄清楚什么叫这个向量。 – 2012-04-23 14:45:22

+0

好的,谢谢你们 – 2012-04-23 14:49:04

0

这听起来像在您的网站上的黑客企图。检查正在使用的正在接收用户输入的数据库,文本文件等。这听起来像你没有检查什么是发布到你的服务器我猜。

3

显然,您需要从用户那里接受输入,然后将其作为HTML的一部分输出,而无需引用或消毒。有两个快速检查要做:

1)打开源的页面输出此警报和内部源搜索警报的确切文本 - 这应该让你清楚地指出什么用户填充字段被泄露。 2)可以肯定的是,搜索由用户生成的数据库中的所有其他字段(登录名,注释文本等)以查找“script”和“alert”字样。

未来:在将HTML插入HTML页面之前,始终清理您的输入(删除HTML标记)或将符号转义为符合标准的实体,或者通过将其分配给DOM中的文本节点值来明确处理纯文本。

相关问题