問題タブ [sandbox]

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.

0 投票する
2 に答える
3524 参照

java - Rhino: JavaScript からアクセスできる Java パッケージを制限する

JavaScript インタープリター (Rhino) を Java アプリケーションに埋め込む場合 (そのアプリケーションをスクリプト化できるようにするため)、スクリプトで使用できる Java パッケージを制限するにはどうすればよいでしょうか? たとえば、「java.lang.*」のみにアクセスできるようにする必要があります。

0 投票する
4 に答える
2221 参照

java - Java / Groovy/Freemarkerコードのサンドボックス化-特定のメソッドの実行を防止します

開発者がカスタムのGroovyスクリプトとフリーマーカーテンプレートをアップロードできるようにするシステムを開発しています。

デフォルトのJavaセキュリティインフラストラクチャを使用して、非常に高いレベルで特定のレベルのセキュリティを提供できます。つまり、コードがファイルシステムまたはネットワークにアクセスできないようにしますが、特定のメソッドへのアクセスを制限する必要があります。

私の計画は、GroovyおよびFreemarkerランタイムを変更して、特定のメソッドをホワイトリストまたはブラックリストに登録するアノテーションを読み取ることでしたが、これにより、コードのフォークバージョンを維持する必要があります。これは望ましくありません。

基本的にできる必要があるのは、GroovyまたはFreemarkerから呼び出されたときに特定のメソッドが実行されないようにすることだけです。コールスタックを調べるハックを検討しましたが、これは大規模なスピードヒットになります(そしてそれはかなり厄介です)。

これを実装するための他のアイデアはありますか?

0 投票する
2 に答える
5533 参照

c# - スレッドを別のユーザーとして実行できますか? (.NET 2.0/3.5)

動的アセンブリへの計算を含むソース ファイルのランタイム コンパイルを実行する C# アプリケーションがあります。明らかに、これは深刻なセキュリティ上の問題を引き起こします。

次の「式」から、以下のコードが生成され、動的アセンブリが作成されます。

方式:

生成されたコード:

次に、動的アセンブリが読み込まれ、Reflection を介して Evaluate メソッドが実行されます。これはうまくいきます。

問題は、悪意のあるコード インジェクションの可能性が非常に高いことです。そのため、「サンドボックス化された」スレッドで Evaluate メソッドを実行したいと考えています (アンマネージ API 呼び出しなし)。テスト目的で、組み込みの匿名 Windows ユーザーを使用しており、次のコードを作成しました。

これにより、匿名ユーザーの ID とプリンシパルが得られます。アンマネージ API 呼び出しを使用せずに、指定されたセキュリティ コンテキストでそのスレッドのコードが実行されるように、これをスレッド tSandbox にどのように適用できますか?

ありがとう!

0 投票する
5 に答える
2132 参照

java - サンドボックス (AppEngine や WebStart など) で実行できる Mini-OSGi?

OSGi によって実装されたモジュラー バンドルの概念がとても気に入っています。

また、Google AppEngine (Web アプリケーション用) や Java WebStart (クライアント ソフトウェア用) などの「マネージド デプロイメント」サービスも気に入っています。

これらの 2 つのアイデアは、概念的には互いに補完し合っているように見えます。

ただし、OSGi 標準には、AppEngine や Webstart などのサンドボックス化された仮想マシン上で Felix や Equinox などの実装を実行することを不可能にする機能がいくつか含まれています。これらの環境では、ファイル システムに直接アクセスすることはできません。たとえば、永続的なバンドル状態とネイティブ ライブラリを格納するために使用される OSGi バンドル キャッシュが除外されます。

現在、ネイティブ ライブラリの使用や、永続的なバンドル状態の使用にはあまり関心がありません。OSGi のコア バンドルとサービスの概念を実装するフレームワークはありますか (理想的には、OSGi バンドルをそのままデプロイできるように互換性のある方法で)、バンドル キャッシュがなくても機能します (およびサンドボックスでは利用できないその他の機能)。 ?

AppEngine または WebStart で動作する限定バージョンの Felix のようなものを探しています。

もちろん、WebStart エンジンと Google AppEngine がすぐに使える OSGi フレームワーク サービスを提供していれば、それも素晴らしいことです...

更新: AppEngine のもう 1 つの非常に制限的な側面は、新しいスレッドを開始できないことです。これにより、(とりわけ)非同期バンドルのライフサイクル管理が妨げられます。明らかに、WebStart の問題ではありません。

0 投票する
3 に答える
3754 参照

c - 子プロセスのメモリ使用量?

私はUbuntuでCで一種の「サンドボックス」を実行しています。プログラムを受け取り、ユーザーの下で安全に実行しますnobody(そして信号などを傍受します)。また、メモリと時間制限を割り当て、時間とメモリ使用量を測定します。
(興味がある方のために説明すると、これは一種の「オンライン審査員」がテスト データにプログラムをマークするためのものです)

現在、 mooshak のsafeexecモジュールを採用しています。ほとんどの機能は正常に動作しますが、メモリ使用量に問題があるようです。(かなり不正確です)

ここでアドバイスを試し、VM を から解析/proc/pid/statしたところ、精度の問題は修正されました。ただし、非常に迅速に終了するプログラムの場合は機能せず、0 が返されます。

safeexecプログラムは次のように動作するようです:

  1. それfork()
  2. execv()子プロセスで使用して、目的のプログラムを実行します
  3. 子プロセスが終了するまで、親プロセスからプログラムを監視します ( を使用するwait4と、たまたま CPU 使用率が返されますが、メモリは返されませんか?)そのため、子プロセスを
    解析し/proc/../statます (execv に置き換えられました)

では、なぜ VM in/proc/child_pid/statが 0 になることがあるのでしょうか?
execv() があまりにも早く終了し、/proc/child_pid/stat利用できないためですか?
もしそうなら、子供のメモリ使用量を取得する他の方法はありますか?
(これは制限時間内でプログラムを判断するためのものなので、valgrind のようにパフォーマンスが低下するものは許せません)

前もって感謝します。

0 投票する
5 に答える
206036 参照

javascript - さまざまなブラウザのjavascriptでクライアント側のファイルコンテンツを読み取る

ブラウザを介してクライアントマシン上のファイルの内容を読み取るためのスクリプトのみのソリューションを提供しようとしています。

FirefoxとInternetExplorerで動作するソリューションがあります。それはきれいではありませんが、私は現時点で物事を試しているだけです:

電話をかけると、テキスト領域getFileContents()に内容が書き込まれます。fileContents

他のブラウザでこれを行う方法はありますか?

私は現時点でSafariとChromeに最も関心がありますが、他のブラウザの提案も受け付けています。

編集:「なぜあなたはこれをしたいのですか?」という質問に答えて:

基本的には、クライアント側でワンタイムパスワードと一緒にファイルの内容をハッシュして、この情報を確認として送り返すことができるようにします。

0 投票する
3 に答える
8234 参照

java - 現在のスレッドの Java リフレクションを無効にする

ある程度信頼できる Java コードを呼び出す必要があり、そのコードの実行中にリフレクションを使用する機能を無効にしたいと考えています。

これは SecurityManager で行うことができますか?

明確化/コンテキスト:これは、 JavaScript/Rhino から呼び出すことができるパッケージの制限に関する別の質問へのフォローアップです。受け入れられた回答は、その方法に関するブログ エントリを参照しており、2 つの手順が必要です。最初の手順は Rhino API (ClassShutter) を使用し、2 番目の手順はリフレクションと Class.forName() をオフにします。私は、SecurityManager を使用してその 2 番目のステップをよりクリーンに実行できると考えていました (指摘されているように、途中で複雑な獣である SecurityManager について学ぶこと)。

要約すると、(ファイルを設定するのではなく、コードから) Class.forName() とリフレクション パッケージ全体へのアクセスをオフにする必要があります。

0 投票する
9 に答える
11185 参照

linux - 私のサーバーで他の人のコード(サンドボックス)を実行する安全な方法は?

他の人のコードをローカルで実行するWebサービスを作りたいです。当然、コードの特定の「サンドボックス」ディレクトリへのアクセスを制限して、サーバーの他の部分(DB、メインWebサーバーなど)に接続できないようにします。

これを行うための最良の方法は何ですか?

VMware/Virtualboxを実行します。

  • +私はそれが得るのと同じくらい安全だと思います。誰かがなんとか「ハッキング」したとしても、ゲストマシンをハッキングするだけです。

  • +プロセスが使用するCPUとメモリを制限できます

  • +セットアップが簡単-VMを作成するだけ

  • -サンドボックスディレクトリをホストからゲストに「接続」するのが難しい

  • -VMを管理するために余分なメモリとCPUを浪費する

恵まれないユーザーを実行します。

  • +余分なリソースを無駄にしません

  • +サンドボックスディレクトリは単なるディレクトリです

  • ?CPUとメモリを制限できませんか?

  • ?十分安全かどうかわかりません

その他の方法で?

Fedora Core 8を実行しているサーバー、JavaおよびC++で記述された「その他の」コード

0 投票する
5 に答える
404 参照

security - ホストされたサービスで、信頼されていないサードパーティ コードをどのように監視、管理、および実行しますか?

サードパーティのクライアントによって作成されたプラグインを許可するホスト サービスを実行しているとします。

おそらく、インフラストラクチャを提供するが、クライアントが独自のゲーム審判を開発できるようにするゲーム サービス プロバイダーです。または、コーダーがコーディングの問題の解決策として実行するコードを提出できるコーディング競技サイト。

このユーザーコードを実行しようとしているサーバーに潜在的な害を与えないように、このユーザーコードをどのように強化/ロックダウン/サンドボックスしますか?

リソースの使用状況 (主に CPU、メモリ) をどのように監視および制限しますか?

これは Python の良いスタートですが、言語(Python、Lua、Ruby など) に関係なく共有できる具体的な経験を持っている人がここにいるのではないかと思っています。