問題タブ [google-caja]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - グーグルカジャの使い方
ページがあり、サードパーティが小さなアプリケーション/iframeをページに埋め込むことを許可したいとします。私のページでcajaを使用して、サードパーティの小さなアプリ/iframeを保護するため。cajaを使用するには、追加のjavascript /サーバーサイドコードを追加する必要がありますか?サードパーティの小さなアプリケーションのフェッチは、プロキシまたは直接iframeを介して行われますか?
java - Javaプログラムを実行できません!NoClassDefFoundError?
私は.NET開発者ですが、現在のプロジェクトでは、JavaプロジェクトであるGoogleCajaを使用する必要があります。ええとああ!
Windowsマシンでhttp://code.google.com/p/google-caja/wiki/RunningCajaのガイドに従いましたが、プログラムを実行できません。彼らが提案するコマンドラインが機能しなかったので、私はant-jarsディレクトリにcdして、plugin.jarを実行しようとしました。
それはどうですか?
test.htmの代わりにfile:/// d:/java/caja/svn-changes/pristine/ant-jars/test.htmも試しました。ソースを見ると、ファイルパラメータはURIであるようです...
また、plugincでIKVMを実行して、Javaについて心配しないようにしましたが、ClassDefNotFoundExceptionも発生しました...
ありがとう!
編集:これまでの助けをみんなに感謝します:)まだ立ち往生しています。頑張ってください。これは、.net開発者が美しいOSSテクノロジーに切り替えることの始まりかもしれません。
build.xmlファイルのコードを指定して実行する方法はありますか?
jquery - Caja と JQuery
cajoler を使用してサードパーティの JavaScript をサニタイズし、ホストで実行するとします。JQuery に関しては次のとおりです。
- サード パーティのアプリケーションに JQuery を含めることができますか。これはプロセスで甘やかされます。または、
- ホスト サイトは JQuery 機能をサード パーティに公開していますか?
javascript - caja を使用して Javascript をサニタイズしますか?
私が提供するプラグイン API オブジェクト以外へのアクセスを許可することなく、アプリケーションのユーザーがその機能を拡張する Javascript でプラグインを作成できるようにしたいと考えています。たとえば、プラグインは次のようになります。
Caja は仕事を成し遂げることができるように見えますが、ドキュメンテーションはおそらく私が見たオープンソース プロジェクトの中で最悪です (かなりの成果です!)。システムをセットアップするのに助けが必要です。
私は、コマンド ラインで動作する cajoler を取得しました。また、そのようなプラグインの 1 つを、うまくいけばサニタイズされた Javascript に変換しました。だまされた Javascript は、「IMPORTS___」オブジェクトが提供されることを期待しているように見えます。これには、プラグインがアクセスできるすべてのものを含める必要があります。これまでのところかなり有望です!
残念ながら、その甘やかされた Javascript ファイルを実際にロードして実行するのは、本当に面倒なことになりました。関数 loadCaja は実際には google-caja の現在のトランクのどこにも表示されないため、ドキュメントのソース スニペットは残念ながら完全に間違っています。少なくとも何かを行うコードを追跡しました:
残念ながら、これが行うことは、私がすでに甘やかした JavaScript を再び甘やかすように加担しようとすることです。私は間違いなく、サーバーがすべてのリクエストですべてのプラグインを再呼び出しすることに興味がありません。アップロード時にそれを甘やかし、すぐに使えるように保管します。
IMPORTS___ に何が入るかを指定する方法や場所に関するドキュメントも見つかりません (それがセキュリティ モデル全体であることを考えると、ドキュメントの奇妙な見落としのようです)。それは .run() に渡されるオブジェクトですか?
javascript - 安全な方法でサードパーティのJavaScript(一部のDBから提供)を実行する
ユーザーが生成したJavaScript関数がデータベースに保存され、代わりに他の多くのユーザーに提供されるアプリケーションを構築しています。スクリプトは、管理者権限を持つ人物によって検証される必要があります (信頼できる人物である必要がありますが、スクリプトはユーザー自身によって選択されるため、一種の検証が必要と思われます)。
実行される関数は、計算目的のためだけの主要なものです。DOM へのアクセスや (少なくとも現時点では) グローバル オブジェクトは必要ありません。
ユーザーが文字列の単語をカウントする関数を定義するとします (簡単な例として)。
現時点での私のアプローチは、関数をクロージャーでラップし、入力プロパティを持つオブジェクトを渡し、その中にローカル var ウィンドウを定義して、このグローバル オブジェクトにアクセスできないようにすることです (明らかに、これでは十分ではありません。ウィンドウのすべてのプロパティを反復処理します)。オブジェクトとそれらをローカルで定義することは可能かもしれませんが、その見返りにいくつかの重要な機能が壊れる可能性があり、十分ではありません)
次のアイデアは、関数をオンザフライで ADsave 呼び出しにラップして、有害な可能性がある機能 (およびグローバル スコープへのアクセス) を防ぐことでしたが、これには、JSLint / adsave オプションをオンザフライで使用してコードを検証する必要があります。 (そして、これを行う方法に関する資料が見つかりません... !)
次のアプローチは、Caja のようなものを使用することです (実際には、JavaScript コードを Caja バージョンのコードに「変換」する必要があるため、新しい関数を簡単に追加する可能性がなくなります (これは、私自身のアプリケーションでは実行できません)。 -はえ)。
関数がサーバーから返されるたびに (クライアントで作成されたときだけでなく) 関数を検証する必要があるため、これまでのところ ADsave が最適なソリューションのようです。
上記の問題に対する解決策 (またはおそらくより良い解決策 - サードパーティの jscript (一部の DB から提供される) を安全な方法で実行することは、今日では非常に一般的なタスクです) を持っている人はいますか?
security - #(ハッシュ)で始まるリンクを許可しても安全ですか?
私はWebアプリを構築しており、ユーザーはHTMLコンテンツを動的に作成できます。彼らがで始まるリンクを作成できるようにすることは安全ですか(egwrt XSS攻撃)#
?
なぜそうならないのかわかりません-おそらく私はただ妄想しているだけです。#
(私のJavascriptコードは、 URLに対して特に何もしません。)
とにかく私が尋ねる理由の1つは、 HTMLをサニタイズするためにGoogleCajaのhtml-sanitizerを使用していることです。URL:sをフィルタリングしますが、デフォルトのフィルターは次のようになります。
つまり、プロトコルを指定する必要があり、HTTPとHTTPSのみが許可されますが、許可されませんjavascript:
。最近、URLフィルタリング機能を次のように変更しました。
(つまり、#....
許可されます。)
#...
リンクが安全だと思うかどうか聞いてみるべきだと思いました。
(たとえば、ブラウザは `href ='#javascript:....'のようなリンクで異常なことは何もしませんか?まあ、そうではありません(とにかく私のブラウザではありません)が、おそらく他の何かがあります。 ..私が知らないこと)
javascript - このCaja(安全なJavaScript)コードについての説明?
私はCajaを研究していて、それがどのように機能するかを理解するのに苦労しています。
これには、次のようなキャプションがあります。
図10:権利の増幅。各ブランドには、一致した暗号化および復号化キーのように機能するシールおよびシール解除機能があります。オブジェクトを封印すると、対応する開封機能によってのみ開封できる封印されたボックスが返されます。ここに示されている実装手法は、M。Stieglerによるものです。
これは擬似コードですか?atbox()
やなどの何が起こっているのか混乱していthrow ...;
ます。ヒントやアドバイスをいただければ幸いです。
javascript - サンプル Caja (JavaScript の安全なサブセット) ソース コードを実行するにはどうすればよいですか?
Caja は、Google が開発した安全なバージョンの JavaScriptです。私はそれをテストするのに問題があります。つまり、デモを表示するにはどうすればよいですか?
javascript - JavaScript の脆弱性 - 「this」盗用:
私は Caja について学んでいますが、「これ」を盗むという概念について混乱しています。
Caja が対処するもう 1 つのセキュリティ上の脆弱性は、「this」盗用と呼ばれます。オブジェクトのクライアントがオブジェクトの状態にメソッドを追加して、オブジェクトの「this」に別名を付けることができる場合、前述の保護された「this」ルールは適用されません。
次に、次のコンストラクターを示します。
"x_" に関する隠れたリークがあります:
次のコードは、式でその秘密の値を明らかにすることができます。
これはどのように作動しますか?なぜそんな問題が?ヒントやアドバイスをいただければ幸いです。
google-visualization - GoogleScriptHtmlServiceでGoogleChartToolsを使用できますか
HtmlServiceを使用してGoogleScriptsでGoogleChartToolsを使用したいと思います。しかし、cajaがチャートを表示するためのスクリプトを挿入できるかどうかはわかりません。私の最初のテストでは空白のページが表示されます。
少なくともそれが可能かどうか誰かが知っていますか?
Google Scriptが「グラフ」サービスを提供していることは知っていますが、機能はGoogleグラフツールで使用できるものに比べて制限されています。
ありがとう、