0

ウェブサイト上のjavascript-fileのすべてのリクエストを、ハードドライブ上にあるこのファイルの変更されたバージョンにリダイレクトするgoogle-chrome-extensionを作成しました。それは機能し、私はそれを次のように単純化して行います:

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

Modified.jsは、コードの行を変更したことを除いて、同じjavascriptファイルです。私は次のようなものを変更しました

var message = mytext.value;

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

私の質問は、このWebサイトの管理者が、javascriptファイルをリダイレクトして、「mysecretkey」を取得できるように自分のWebページを変更できるかどうかです。(管理者は私の拡張機能がどのように機能し、どの行が変更されているかは知っていますが、使用されているキーはわかりません)

前もって感謝します

4

3 に答える 3

0

aes.encrypt管理者はサイトのあらゆる側面を制御できるため、2番目の引数を投稿するように簡単に変更して、通常どおり続行できます。したがって、秘密鍵はすぐに明らかになります。

于 2012-10-04T23:35:23.123 に答える
0

いいえ。Web管理者は、サーバーに送信されて表示される前に、設定内容を確認する方法がありません。

于 2012-10-04T23:38:51.583 に答える
0

はい、「管理者」はコードのソースコードを読み取ることができます。
あなたの方法は非常に安全ではありません。「mysecretkey」の読み方は2つあります。

自明ではないものから始めましょう:ソースへの参照を取得します。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 に答える