5

Greasemonkeyスクリプトは、ページ内のスクリプトとの競合を防ぐために、何らかの方法で分離された無名関数に自動的にラップされることを知っています。

Chromeのユーザースクリプトでも同じことが起こりますか?

4

1 に答える 1

7

はい、Greasemonkeyスクリプトは通常、無名関数でラップされています。そして、Chromeのユーザースクリプトも明らかに多すぎます。

しかし、もっと重要なことは、Greasemonkeyスクリプトは通常XPCNativeWrapperサンドボックスにラップされており、Google Chromeはユーザースクリプトを拡張機能に変換し、Googleが「孤立した世界」と呼ぶ分野で動作します2

したがって、セキュリティのためにスクリプトコードを無名関数でラップする必要はありません。それらはすでに保護されています。

次の点に注意してください。

  1. ページに直接コードを挿入する(<script>タグを作成する)と、そのコードはページのJSで確認できます。
  2. を使用するunsafeWindowと、理論的にはページがそれに続き、わずかに昇格された特権を取得できます。

リスクは非常に低く、実際に文書化されたエクスプロイトを見つけることはできませんでした。

~~~結論
として、スクリプトは両方のブラウザでさまざまな程度に分離されています。(そして、単に無名関数にラップされるだけではありません。)

Greasemonkeyには、Firefoxで利用できる優れた特権機能のセットがあります。Chromeのユーザースクリプトははるかに制限されていますが。

ただし、GMの機能の多くは、Tampermonkey拡張機能を使用してChromeに復元されます。




1 Greasemonkeyバージョン1.0 (2012年8月24日)以降、サンドボックスはディレクティブによって制御さ@grantます。スクリプトがで実行される(またはデフォルトで)@grant none場合、サンドボックスは使用されません。スクリプトはプライベートスコープで実行されるだけで、通常GM_のAPI関数は機能しません。

2それはいくつかの厄介なサンドボックスよりもはるかに大きく/より良い音ではありませんか?(^ _ ^)

于 2011-07-12T05:52:23.427 に答える