今天早上,我在我的一个运行KnockoutJS、 jQuery 和Underscore.js的项目中醒来,发现一个 JavaScript 警报。它说“我可以在您用户的浏览器上运行我选择的任何 JavaScript”。我正在下载的唯一第三方 JavaScript 是Typekit,删除它并不会让它消失。我搜索了我的 JavaScript 和供应商 JavaScript,但该字符串没有匹配任何内容。
您将如何解决这个问题和/或这是已知发生的事情?
今天早上,我在我的一个运行KnockoutJS、 jQuery 和Underscore.js的项目中醒来,发现一个 JavaScript 警报。它说“我可以在您用户的浏览器上运行我选择的任何 JavaScript”。我正在下载的唯一第三方 JavaScript 是Typekit,删除它并不会让它消失。我搜索了我的 JavaScript 和供应商 JavaScript,但该字符串没有匹配任何内容。
您将如何解决这个问题和/或这是已知发生的事情?
如果您的应用程序有一个数据库,那将是下一个要检查的地方。我猜有人发现并利用了一个注入漏洞(未经过滤的 HTML 输入或 SQL)并通过数据库将脚本注入到页面中。
最后一个地方是查看 ruby 代码,看看是否有恶意用户以某种方式修改了您的源代码。
显然,您从用户那里获取输入,然后将其作为 HTML 的一部分输出而无需引用或清理。有两个快速检查要做:
1) 输出此警报的页面的开放源代码,并在源内部搜索警报的确切文本 - 这应该让您清楚地表明哪些用户填写的字段受到了损害。2) 可以肯定的是,在数据库中由用户生成的所有其他字段(登录名、评论文本等)中搜索单词“script”和“alert”。
未来:始终在将输入插入 HTML 页面之前对其进行清理(删除 HTML 标记),或者根据标准将符号转义为实体,或者通过将其分配给 DOM 中文本节点的值来明确处理纯文本。
这听起来像是对您网站的黑客攻击。检查正在使用的接收用户输入的任何数据库、文本文件等。我猜你好像没有检查发布到你的服务器的内容。