2012-01-20 5 views
5

私は自分のアプリケーションのユーザーが、私が提供するプラグインAPIオブジェクト以外のものへのアクセスを許可せずに、その機能を拡張するプラグインをJavascriptで書くことを許可したいと思います。例えば、プラグインは、次のようになります。cajaを使用してJavascriptをサニタイズしますか?

plugin.hookSomeUserAction(function() { 
    plugin.doSomethingWickedAwesome(); 
    document.title = 'hacked!'; //shouldn't work 
}); 

仕事を得ることができるはずのようカハは見えますが、ドキュメントは、おそらく私は(かなり見てきたすべてのオープンソースプロジェクトの最悪です達成!)。私はシステムをセットアップする助けが必要です。

私はコマンドラインで作業しているカジノを得ています。そのプラグインの1つをうまくいけば浄化されたJavaScriptにcajoledしました。要約されたJavascriptは、 "IMPORTS___"オブジェクトが提供されることを期待しているように見えます。このオブジェクトには、プラグインがアクセスできるすべてのものが含まれている必要があります。今のところ有望!

残念なことに、実際にロードして実行するためにそのカジュアルなJavascriptファイルを取得することは本当の混乱になっています。ソースコードのin the docsは、残念ながら完全に間違っています。これは、loadCaja関数が現行のgoogle-cajaトランクのどこにも表示されないためです。

<div id="plugin"></div> 
<script> 
    caja.configure({ 
     cajaServer: "/js/caja" 
    }, function(frameGroup) { 
     frameGroup.makeES5Frame(document.getElementById('plugin'), 
      { /* No network access */ }, 
      function(frame) { 
       frame.url('/js/plugins/test.js') 
        .run({}); 
      } 
     ); 
    }); 
</script> 

残念ながら、何これが行うことは、私はすでにcajoledてきたJavaScriptを再誑すするcajolerを取得しようとする試みがある:私は、少なくとも何かを行い、いくつかのコードを突き止め。私は間違いなくではなく、すべてのリクエストでサーバーをすべてのプラグインに再登録することに興味があるのはです。私はちょうどアップロード時にそれをcajoleし、使用する準備ができてすぐにそれを保存します。

また、IMPORTS___に何がどのように配置されるかを指定する方法についてのドキュメントもありません(セキュリティモデル全体がドキュメントでは不思議な見落としのようです)。オブジェクトが.run()に渡されるのでしょうか?

答えて

0

Cajaについての私の唯一の知識は、SESのソースコードを読んでいるだけで、その使用のコンテキストを知らないという点にあります。私はソースコードが文書化されているかどうかにかかわらず、非常によく文書化されていることを発見しました。

http://code.google.com/p/es-lab/source/browse/trunk/src/ses/initSES.js

+1

私はSESとは何ですか? – Coffee

関連する問題