我创建了一个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“。(管理员知道我的扩展是如何工作的,以及修改了哪条线路,但不知道使用的密钥)
提前感谢
发布于 2012-10-05 21:27:01
是,“管理员”可以阅读你的代码的源代码。
你的方法非常不安全。有两种方法可以读取"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);与arguments.callee一样,许多prototype方法也可能导致泄漏。如果“管理员”想要破解你的代码,他一定能够做到。
另一种方法是更容易实现的
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-05 07:35:23
因为管理员可以控制站点的任何方面,所以他们可以很容易地修改aes.encrypt来向他们发布第二个参数,然后照常继续。因此,你的密钥会立即暴露出来。
发布于 2012-10-05 07:38:52
不是的。Web管理员无法看到您设置的内容,然后才能将其发送到他可以看到的服务器。
https://stackoverflow.com/questions/12737488
复制相似问题