mozilla
Your Search Results

    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);
    

    ドキュメントのタグと貢献者

    Contributors to this page: Mgjbot, Electrolysis
    最終更新者: Mgjbot,