如何通过分析 JavaScript & HTML 来检测 HTTP 请求?

Posted

技术标签:

【中文标题】如何通过分析 JavaScript & HTML 来检测 HTTP 请求?【英文标题】:How to detect HTTP request by analysing JavaScript & HTML? 【发布时间】:2015-08-14 09:49:10 【问题描述】:

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

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

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

    使用img标签:<img src=“http://domain.b.com/statics”>

    使用脚本标签。

    使用表单标签。

    使用 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]||ck=[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,))

【问题讨论】:

看看 phantomjs。 你想通过编程还是手动分析这个?如果手动,Firebug 将是检查 HTTP 事务的最佳选择。 【参考方案1】:

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

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

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

【讨论】:

最重要的安全原则是,将应允许的内容明确列入白名单比将不允许的内容列入黑名单更安全。

以上是关于如何通过分析 JavaScript & HTML 来检测 HTTP 请求?的主要内容,如果未能解决你的问题,请参考以下文章

通过面试题学JavaScript知识

通过面试题学JavaScript知识

JSF - 我如何实现 JavaScript “你确定吗?”提示输入 <h:commandButton>

如何通过 h:outputScript 包含 JavaScript 文件? [复制]

从javascript onload事件执行managebean方法

如何在 Javascript 中插入 HTML 表格?