4

javascript:FunctionName();私は自分の Web サイト用に多くの JavaScript 関数を作成してきましたが、最近、これらの関数を URL バーに書き込むだけで呼び出せることがわかりました。このような関数の呼び出しは、私の Web サイトにとって脆弱である可能性があります。これを防ぐ方法はありますか? アドレス バーで Javascript の使用を停止する方法はありますか?

関数への呼び出しがどこから行われたかを検出する方法と同様に、微妙な方法も役立ちます。アドレスバーからではなかった場合は関数を実行する必要があります。そうでない場合は実行されませんか?

FacebookのアドレスバーにJavascriptを使ってみたのですがうまくいきません。だから、これを止める方法があるはずです..

4

1 に答える 1

2

「関数の呼び出しが行われた場所と、アドレスバーからでなければ関数を実行する必要がある」を検出することは、そのようなことがある限り、クライアント側のセキュリティにアプローチする悪い方法であるという他のコメンターに同意します.

とはいえ、関数のスコープ、クロージャ、およびこれが URL バーにどのように関連するかは興味深いトピックです。 グローバル変数と scope に関するその他のコンテキストを次に示します。短いバージョンは、次のような関数がある場合です。

function test (argument) {
    alert('hey')
}   

ウィンドウ/グローバルスコープにあるため、URLバーを介して実行できます。これは、javascript URIの範囲内にあるようです。一方、同じ関数をクロージャーに入れると:

(function() {
    function test (argument) {
        alert('hey')
    }       
})()

...URL バーで機能を実行する限り、アクセスできないはずです。

ブラウザー ベンダーが URL 経由の Javascript を実装した理由の歴史を知りたいと思います...現在はブックマークレットなどで実際に使用されていますが、十分に文書化されていないようです。

于 2013-11-13T07:28:20.167 に答える