問題タブ [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.
iphone - iPhone OS アプリはデバイスのファイルシステムを検索できますか?
アプリケーション内から iPhone ファイルシステムを検索できますか? iPhone OS デバイスを検索し、iPhone OS デバイスにインストールされているすべてのアプリのリストを返す必要があります。私は、アプリがサンドボックスの外でできることとほとんどできないことに関する Apple の制限と規則をよく知っています。また、フォト アルバムを除いて、アドレス帳(指定されたクラスを介して) は、アプリケーションが外部のほとんどのものにアクセスすることを許可されていないことを知っています。セキュリティのため、そのホーム ディレクトリ (サンドボックス) の しかし境界があいまいです。
とにかく、質問に戻ります: UISearchBarDelegate (または他のクラス/プロトコル) で iPhone デバイスを検索できますか?
python - Linux の安全な Python 環境
Linux で任意の Python スクリプトを安全に実行する環境を作成することはできますか? これらのスクリプトは、信頼できない人から受け取ったものであり、大きすぎて手動で確認できない場合があります。
非常に強引な解決策は、仮想マシンを作成し、信頼できないスクリプトを起動するたびにその初期状態を復元することです。(高過ぎ。)
Python がファイル システムにアクセスしたり、他のプログラムと対話したりすることを制限することは可能でしょうか。
java - Java デスクトップ アプリケーションの制限?
私は C/C++ のバックグラウンドを持っており、現在は多くの C# の作業を行っています。
最近、Android SDK をいじって以来、Java でいくつかのプロジェクトを行うことに興味を持つようになりました。
システムへのアクセスを制限できるサンドボックスで Java アプリが実行されることは知っています。
デスクトップ/サーバー アプリケーション環境では、どのような制限がありますか?
c - 軽量の C コード サンドボックスを作成するには?
ローカルおよびオンライン ソースから関数を収集できる C プリプロセッサ / コンパイラを構築したいと考えています。すなわち:
それは簡単な部分です。
難しいのは、インポートされたコードを、ディスクまたはシステム リソース (メモリ割り当てとスタックを含む) への直接または無制限のアクセスから "サンドボックス化" するための信頼できる方法が必要なことです。信頼できない C コード (モジュール) の小さなスニペットを、別のプロセス、VM、またはインタープリターに配置するオーバーヘッドなしで安全に実行する方法が必要です(ただし、別のスレッドは許容されます)。
要件
- CPU時間を含むデータとリソースへのアクセスにクォータを設定する必要があります。
- 標準ライブラリへの直接アクセスをブロックします
- 無限再帰を生み出す悪意のあるコードを阻止したい
- 静的割り当てと動的割り当てを特定の制限に制限したい
- モジュールが発生させる可能性のあるすべての例外 (0 による除算など) をキャッチしたいと考えています。
- モジュールは、コア インターフェイスを介してのみ他のモジュールと対話できます
- モジュールは、コア インターフェイスを介してのみシステム (I/O など) と対話できます。
- モジュールは、ビット操作、数学、配列、列挙型、ループ、および分岐を許可する必要があります。
- モジュールは ASM を使用できません
- モジュール用に予約されたメモリへのポインタと配列のアクセスを制限したい (カスタムの safe_malloc() を介して)
- ANSI C またはサブセットをサポートする必要があります (以下を参照)。
- システムは軽量でクロスプラットフォーム (組み込みシステムを含む) である必要があります。
- システムは GPL または LGPL と互換性がある必要があります。
C のサブセットで満足しています。テンプレートやクラスなどは必要ありません。私が主に興味を持っているのは、高水準言語ではうまくいかない高速な数学、ビット演算、バイナリ データの検索と処理などです。
モジュールを作成するために、既存の C コードを変更せずに再利用できるという意図はありません。その意図は、モジュールを基本的なロジックと変換操作 (ビデオのトランスコードや圧縮操作など) に限定するように設計された一連のルールと制限に準拠することをモジュールに要求することです。
このようなコンパイラ/プリプロセッサへの理論的な入力は、module_main 関数を含む単一の ANSI C ファイル (または安全なサブセット) であり、インクルードまたはプリプロセッサ ディレクティブはなく、ASM はなく、ループ、分岐、関数呼び出し、ポインターが許可されます。数学 (モジュールに割り当てられた範囲に制限されます)、ビットシフト、ビットフィールド、キャスト、列挙型、配列、int、float、文字列、数学。それ以外はオプションです。
実装例
これをよりよく説明するための疑似コードスニペットを次に示します。ここで、モジュールはそのメモリ割り当てクォータを超え、無限再帰も作成します。
これは、プリプロセッサがウォッチポイントを追加してメモリ使用量と再帰をチェックし、すべてを例外ハンドラにラップした変換バージョンです。
これらのチェックの実行がモジュールのパフォーマンスに影響を与えることは理解していますが、解決しようとしているタスクについては、高水準言語または VM 言語よりもパフォーマンスが優れているのではないかと思います。モジュールが危険なことをするのを完全に止めようとしているわけではありません。制御された方法で (ユーザーのフィードバックなどを介して)、危険なことを強制しようとしているだけです。つまり、「モジュール X がメモリ割り当てを超えました。続行または中止しますか?」。
アップデート
これまでのところ、境界チェックといくつかのカスタム関数とループコードを備えたカスタムコンパイラ(ハッキングされたTCCのようなもの)を使用して再帰をキャッチすることが最善です。他に何を確認する必要があるか、またはどのような解決策があるかについての考えを聞きたいです。使用前に ASM を削除してポインターをチェックすることで、以下の以前の回答で表明された多くの懸念が解決されると思います。SO コミュニティからさらにフィードバックを引き出すために報奨金を追加しました。
私が探している賞金のために:
- 上で定義した理論上のシステムに対する潜在的なエクスプロイトの詳細
- アクセスごとにポインターをチェックする際の最適化の可能性
- 概念の実験的なオープンソース実装 (Google Native Client など)
- 幅広い OS とデバイスをサポートするソリューション (OS/ハードウェア ベースのソリューションではありません)
- ほとんどの C 操作、または C++ (可能な場合) をサポートするソリューション
GCC で動作するメソッド (つまり、プリプロセッサまたは小さなGCC パッチ) に対する追加の功績。
また、私が試みていることがまったく不可能であることを決定的に証明できる人を検討します。ただし、これまでのところ、反対意見のどれもが、不可能だと考える理由の技術的側面を本当に釘付けにしていないため、かなり説得力がある必要があります。いいえと答えた人を弁護するために、この質問はもともと C++ を安全に実行する方法として提起されました。要件を C の限られたサブセットに縮小しました。
私の C の理解は「中級」に分類できますが、PC ハードウェアの理解はおそらく「上級」の一歩下です。可能であれば、そのレベルの回答を指導してみてください。私は C の専門家ではないので、主に回答に与えられた投票と、その回答が私の要件にどれだけ近いかに基づいて説明します。あなたの主張に十分な証拠を提供し (回答者)、投票すること (それ以外の人) によって支援することができます。報奨金のカウントダウンが 6 時間に達したら、回答を割り当てます。
最後に、この問題を解決することは、ますますネットワーク化され偏執的な世界で C の妥当性を維持するための大きな一歩になると信じています。他の言語がパフォーマンスの点でギャップを埋め、コンピューティング能力が向上するにつれて、C 開発の追加リスクを正当化するのはますます難しくなります (現在の ASM のように)。あなたの回答は、数点の SO ポイントを獲得するよりもはるかに関連性があると思いますので、賞金が期限切れになった場合でも、できる限り貢献してください。
javascript - サンドボックス Javascript
Caja (Java ベース) を除いて、iframe をサンドボックス化するための単純な JavaScript 実装はありますか?
python - Linux でのサンドボックス化
ユーザーが C コードをアップロードして実行結果を確認できる Web アプリケーションを作成したいと考えています (コードはサーバー上でコンパイルされます)。ユーザーは信頼されていません。これは明らかにセキュリティに大きな影響を与えます。
そのため、アプリ用にある種のサンドボックスを作成する必要があります。最も基本的なレベルでは、ファイル システムへのアクセスを特定のディレクトリに制限したいと考えています。Web アプリは特権ユーザーとして実行されていないため、chroot 監獄を直接使用することはできません。刑務所を設定する suid 実行可能ファイルがオプションになると思います。
アップロードされたプログラムはかなり小さいので、すぐに実行されるはずです (せいぜい数秒)。したがって、事前設定されたタイムアウト後にプロセスを強制終了できますが、新しいプロセスが生成されないようにするにはどうすればよいでしょうか? または、できない場合、pgid全体を殺すことは信頼できる方法ですか?
「まったくやらない」以外に、これを行う最善の方法は何でしょうか? :) 私が見逃した他の明白なセキュリティ問題は何ですか?
FWIW、Web アプリは Python で作成されます。
asp.net-mvc - MVC リポジトリに対してテストする最良の方法は何ですか?
私はリポジトリを構築しました。関数が何を返すかを確認するために、リポジトリで一連のテストを実行したいと考えています。
Visual Studio 2008 を使用していますが、(Visual Studio 2008 であるかどうかに関係なく) プレイできるサンドボックスがあるかどうか、またはリポジトリをテストするために実際にモック コントローラーとビューを作成する必要があるかどうか疑問に思っていましたか?
ありがとう、
マット
apache-flex - 最初に要求されたドメイン外のクロスドメインファイルにアクセスできますか?
FlashPlayer10は以下を指定します。
「最初に要求されたドメイン外のポリシーファイルにリダイレクトすると、引き続きポリシーファイルがFlashPlayerによって無視されます。」
ドメイン外のポリシーファイルにアクセスする方法はありますか?
iphone - iPhoneでプログラムで画像をdefault.pngに保存する方法はありますか?
iPhone 用のアプリを作成しており、次の呼び出しのために画像を default.png として保存したいと考えています。これは可能ですか?サンドボックスでは、ローカル ファイル システムの上書きが許可されていないようです。