安全地覆盖Google Chrome扩展程序中的document.cookie

时间:2012-04-13 13:44:33

标签: javascript google-chrome google-chrome-extension override

我正在尝试覆盖Chrome扩展程序中的document.cookie,并且我在同时使用原始document.cookie功能时遇到了很多麻烦。目前我有这个:

var _cookie = document.cookie; 
document.__defineSetter__("cookie", function(the_cookie) {_cookie=the_cookie;} );
document.__defineGetter__("cookie", function() {return _cookie;} );

我使用here中的技术从内容脚本中注入JS。

我看到的行为是我的重新定义的setter和getter被调用,但原始函数不再有效。例如,我可以使用开发者工具检查_cookie和document.cookie,看看它们具有相同的预期值,但Chrome的cookie商店中没有任何Cookie。

有谁能告诉我我是如何打破原始document.cookie功能的? document.cookie是一个属性的问题,所以我实际上并没有得到指向原始setter的指针?

2 个答案:

答案 0 :(得分:3)

var _cookie = document.cookie;未保存cookie的原始getter和setter,它只是调用getter并保存结果。

这个pageoriginal link,现在已经破了)有一个如何保存cookie setter和getter的例子:

var cookie_setter = document.__lookupSetter__ ('cookie');
var cookie_getter = document.__lookupGetter__ ('cookie');

答案 1 :(得分:1)

您已经重新定义了orignal cookie getter和setter函数,并且您可能有可能忘记了新函数中原始函数的重要部分或实现