From 33058f2b292b3a581333bdfb21b8f671898c5060 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:40:17 -0500 Subject: initial commit --- .../components.utils.evalinsandbox/index.html | 34 ++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 files/ja/mozilla/tech/xpcom/language_bindings/components.utils.evalinsandbox/index.html (limited to 'files/ja/mozilla/tech/xpcom/language_bindings/components.utils.evalinsandbox') diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/components.utils.evalinsandbox/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/components.utils.evalinsandbox/index.html new file mode 100644 index 0000000000..6c0cd7bf78 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/language_bindings/components.utils.evalinsandbox/index.html @@ -0,0 +1,34 @@ +--- +title: Components.utils.evalInSandbox +slug: Mozilla/Tech/XPCOM/Language_Bindings/Components.utils.evalInSandbox +tags: + - Add-ons + - Developing Mozilla + - Extensions + - JavaScript + - 'XPCOM:Language Bindings' + - XPConnect +translation_of: Mozilla/Tech/XPCOM/Language_Bindings/Components.utils.evalInSandbox +--- +

+

+

はじめに

+

制限付き特権を持つ環境下で JavaScript のコードを評価したい場合があるかもしれません。Firefox 1.5 (Gecko 1.8) 以降にはこのための API が存在します。それにはそのコンテキスト内でコードを作成し、評価できる「サンドボックス (sandbox)」という概念が含まれています。このメソッドを用いて評価されるコードは常に普通のウェブページと同様の制限付き特権を持つ環境下で評価されます。 +

+

使用法

+

evalInSandbox を使用するには、まず Components.utils.Sandbox というコンストラクタを用いてサンドボックスオブジェクトを作成する必要があります。サンドボックスは主要な URI で初期化しなければなりません。この URI は同一生成元 (same origin) セキュリティチェックに使用されます。例えば、http://www.example.com/ という URI を渡すと、このサンドボックスを用いて評価されるコードは http://www.example.com からのデータにアクセスできるようになります。ウェブページの JavaScript から document.domain をセットして同一生成元セキュリティチェックを変更することができるため、DOM window オブジェクトをサンドボックスのコンストラクタに渡してしまうこともできます。 +

+
// 主要な URI を渡してサンドボックスを作成
+var s = Components.utils.Sandbox("http://www.example.com/");
+// サンドボックスオブジェクトは実行するスクリプトに対して
+// グローバルスコープを持つ
+s.y = 5;
+var result = Components.utils.evalInSandbox("x = y + 2; x + 3", s);
+// result は 10、s.x は 7 となる
+
+s.foo = Components;
+// この場合は "Permission Denied" というエラーが生じる
+Components.utils.evalInSandbox("foo.classes", s);
+
+
+
-- cgit v1.2.3-54-g00ecf