4

我想知道我们是否可以对 JavaScript 代码进行一些分析,以检测包含这些 JS 的网页是否会向其他域发送 HTTP 请求。

例如,有人将他们的静态网页文件放在我的网络服务器(域 A)中,我不希望他们的文件向其他站点(例如域 B)发送 HTTP 请求。

他们有一些方法可以做到这一点:

  1. 使用 img 标签:<img src=“http://domain.b.com/statics”&gt;

  2. 使用脚本标签。

  3. 使用表单标签。

  4. 使用 iframe 标签。

此外,我们还可以使用 JS 来生成 HTTP 请求,例如:

var f = document.createElement('form');
f.action = "http://domain.b.com/statics";
...

Javascript 可以被混淆,上面的 javascript 可以被压缩为:

eval(function(p,a,c,k,e,d){e=function(c){return c};if(!''.replace(/^/,String)){while(c--){d[c]=k[c]||c}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('4 0=3.2(\'1\');0.5="9://8.7.6/10";',10,11,'f|form|createElement|document|var|action|com|b|domain|http|statics'.split('|'),0,{}))
4

1 回答 1

0

完全防止这种情况会很棘手——总会有恶意的第 3 方内容可能使用的新技巧(您没有想到或在撰写本文时不存在)。

在沙箱(例如 PhantomJS)中测试内容,然后查看它是否发出任何此类请求是可能的,但如果恶意代码知道您正在这样做,他们可能会尝试解决它。

您可以考虑采用不允许使用 HTML 标记但自定义标记(提供非常有限的 HTML 功能子集)用于为客户端生成 HTML 的 Wiki/论坛中使用的方法。

于 2015-06-10T08:43:49.513 回答