修复Firefox浏览器常用安全测试插件Live HTTP Headers的reply功能

Live Http headers是Firefox下Http头信息捕获利器,常用于安全测试。但不幸的是Replay功能无法在最近版本的Firefox浏览器(35.0.1)中工作,我决定在插件的官方版本更新之前做一个临时的修复。

我发现在HTTP Headers包含If-Modified-Since能够让replay功能重新工作。

什么是If-Modified-Since?

If-Modified-Since是标准的HTTP请求头标签,在发送HTTP请求时,把浏览器端缓存页面的最后修改时间一起发到服务器去,服务器会把这个时间与服务器上实际文件的最后修改时间进行比较。

If-Modified-Since用于记录页面最后修改时间的HTTP头信息,是由客户端往服务器发送的头,与之相似的是Last-Modified,不同的是Last-Modified是由服务器往客户端发送的 HTTP 头。

如果时间一致,那么返回HTTP状态码304(不返回文件内容),客户端接到之后,就直接把本地缓存文件显示到浏览器中。

如果时间不一致,就返回HTTP状态码200和新的文件内容,客户端接到之后,会丢弃旧文件,把新文件缓存起来,并显示到浏览器中。

如果把

If-Modified-Since: *

添加到Live HTTP Headers中replay功能的默认HTTP头中,就能使replay正常工作了。

修复方法:

在firfox地址栏输入:about:support

进入配置文件夹。

20150312043209317

我这里Live HTTP Headers插件的目录在

.\extensions\{8f8fe09b-0bd3-4470-bc1b-8cad42b8203a}

20150312043238697

然后再进入chrome目录,找到livehttpheaders.jar

修改livehttpheaders.jar中的文件/content/LiveHTTPReplay.js

原版:

if(!livehttpheaders) var livehttpheaders={};if(!livehttpheaders.replay) livehttpheaders.replay={};livehttpheaders.replay.live = window.arguments[0];livehttpheaders.replay.init = function() {

var args = window.arguments;

document.getElementById(“livehttpheaders.replay.method”).value = args[1];

document.getElementById(“livehttpheaders.replay.url”).value = args[2];

document.getElementById(“livehttpheaders.replay.version”).value = args[3];

document.getElementById(“livehttpheaders.replay.headers”).value = args[4];

if (args[5] != null) {

document.getElementById(“livehttpheaders.replay.post”).value = livehttpheaders.replay.stringToEscape(args[5]);

document.getElementById(“livehttpheaders.replay.sendpost”).checked=”true”;

}

livehttpheaders.replay.updatePost();}

修改为:

if(!livehttpheaders) var livehttpheaders={};if(!livehttpheaders.replay) livehttpheaders.replay={};livehttpheaders.replay.live = window.arguments[0];livehttpheaders.replay.init = function() {

var args = window.arguments;

document.getElementById(“livehttpheaders.replay.method”).value = args[1];

document.getElementById(“livehttpheaders.replay.url”).value = args[2];

document.getElementById(“livehttpheaders.replay.version”).value = args[3];

document.getElementById(“livehttpheaders.replay.headers”).value = args[4] + “If-Modified-Since: *\n”;

if (args[5] != null) {

document.getElementById(“livehttpheaders.replay.post”).value = livehttpheaders.replay.stringToEscape(args[5]);

document.getElementById(“livehttpheaders.replay.sendpost”).checked=”true”;

}

livehttpheaders.replay.updatePost();}

修改完成以后重启firfox,试试replay功能,你会发现它已经能够正常工作了。

Notice:

修改之后把文件要打包成livehttpheaders.jar(不是livehttpheaders.zip)

送上已经修改好的

http://share.weiyun.com/3aa6305c265f8af77c9e0bd664e0775e (密码:KdY5)

文章来源:FreeBuf黑客与极客(FreeBuf.COM)

发表评论

邮箱地址不会被公开。 必填项已用*标注