12

サンドボックスについてもっと知りたいです。それだけではありません。簡単なサンドボックスを書けるようになりたいです。

驚くべきことに、どこにも情報がありません。ウィキペディアの記事でさえ良くありません。

どなたか良い素材を教えてください。私はその非常に高度なレベルの概念を知っています。それで、それを学び、習得するための前提条件は何ですか。

4

7 に答える 7

7

APIフックについて読んでください。たとえば、sandboxieはWindowsカーネルをフックしてファイルシステムへのすべてのAPI呼び出しをフィルタリングし、結果をサンドボックスにリダイレクトします。APIをフックしてフィルタリングし、有効なパラメーターのみを渡し、無効な呼び出しに対してエラーを返すことができます。

APIフックについては、ネット上にたくさんの資料があります。codeproject.comを試してください。

于 2010-01-03T12:33:17.603 に答える
4

GoogleのChromiumはサンドボックスを使用しており、サンドボックスに関するいくつかのドキュメントがあります。

于 2010-01-07T15:56:42.190 に答える
3

FreeBSDの刑務所も見るかもしれません。これらは、サンドボックスに相当するFreeBSDです。

jailのソースコードが利用可能です(ただし、FreeBSDコードの残りの部分も理解する必要があります)。

于 2010-01-03T21:46:26.803 に答える
2

これは、何をサンドボックス化するかによって大きく異なります。複数のインターフェース/言語が利用可能な本格的なシステムである場合、車輪を再発明するのではなく、VirtualBoxQEmuまたはその他の代替手段で仮想マシンを実行します

いずれにせよ、サンドボックス、少なくともあるレベルでは、実行中の「想定」されているシステムの仮想化です...

単一の (インタープリター付きの) 言語用にアプリケーションをサンドボックス化する必要がある場合、インタープリターを変更することは賢明なアプローチのように思えます。

于 2010-01-08T09:58:34.453 に答える
1

先日、Linux内でのサンドボックス化の方法の概要を書きました。これは、さまざまな手法の多くのリファレンスにリンクしています。同様の方法が他のオペレーティングシステムにも適用できます。お役に立てば幸いです。包括的に文書化されたものもあまり見つかりませんでした。

于 2011-04-11T11:23:50.740 に答える
1

答えはおそらく言語固有です。残念ながら、ほとんどの言語には組み込みのサンドボックス機能がありません。しかし、関数型言語は、言語を拡張せずにゼロから構築できるほど強力な傾向があります。

Tcl では、基本的なメカニズムはスレーブ インタープリターを作成することです。

interp create -safe sandbox
interp eval sandbox $set_up_code
set result [interp eval sandbox $unsafe_code]
于 2010-01-03T12:16:52.670 に答える