【发布时间】:2013-12-10 03:11:23
【问题描述】:
我有一个数据 javascript 文件,它通过一些自定义代码动态添加到网站。 此文件来自第三方供应商,他们可能会在文件中添加恶意代码
在将此文件添加到网站之前,我想对其进行解析,并查找恶意代码,例如重定向或警报,这些代码在项目/网站中包含文件时会固有地执行。
例如,我的 js 文件可能如下所示:
alert ('i am malicious');
var IAmGoodData =
[
{ Name :'test', Type:'Test2 },
{ Name :'test1', Type:'Test21' },
{ Name :'test2', Type:'Test22' }
]
我通过 XMLHttpRequest 调用将该文件加载到一个对象中,当该调用返回时,我可以使用该变量(这是我的文件文本)并在其中搜索单词:
var client = new XMLHttpRequest();
client.open('GET', 'folder/fileName.js');
client.onreadystatechange = function()
{
ScanText(client.responseText);
}
client.send();
function ScanText(text)
{
alert(text);
var index = text.search('alert'); //Here i can search for keywords
}
最后一行将返回索引 0,因为在文件中的索引 0 处找到了单词 alert。
问题:
- 有没有更高效的方法在文件中搜索关键字?
- 我应该搜索哪些特定的关键字来防止恶意代码被运行?即重定向、弹出窗口、声音等.....
【问题讨论】:
-
你的方法没用。您将永远无法检测到所有可能的恶意行为。你需要重新考虑你是如何做事的。或许提供有关此文件是什么以及您需要如何使用它的更多背景信息?
-
Javascript 足够动态,这非常困难。使用 Google Caja。
-
@DarkFalcon 这是一个文件,其中包含地图节点和有关这些节点的信息(位置、名称等)。我们将它们显示在地图上。这些节点通过第三方交付给我们。
-
@SLaks 感谢您的建议,我将查找 Google Caja。同时,你有恶意代码的例子吗?
-
eval("a"+"lert(1)");等...
标签: javascript security sanitization