2009-05-25 9 views
2

私はPythonで書かれたアプリケーションを持っています。私はeggファイルを使用するアプリケーション用のプラグインシステムを作成しました。 EggファイルにはコンパイルされたPythonファイルが含まれており、容易に逆コンパイルしてアプリケーションをハックすることができます。このシステムを保護する方法はありますか?私はこのためにデジタル署名を使用したいと思います - これらの卵ファイルに署名し、そのような卵ファイルをロードする前に署名を確認してください。 Pythonからプログラムでこれを行う方法はありますか?たぶんwinapiを使用して?Pythonアプリケーションのセキュアなプラグインシステム

+6

「アプリケーションをハッキングする」とはどういう意味ですか?あなたは「悪意のある」ユーザーを心配していますか?ダウンロードし、インストールしてから、何人かのユースケースを提供してください。 - ダウンロードしたアプリケーションを壊す?このシナリオをより詳しく説明してください。 –

答えて

3

このシステムを保護する方法はありますか?

答えは「それに依存する」です。

質問する必要がある2つの質問は、「人は何ができると思われますか」と「人は何かできますか(特定の実装について)」です。後者が前者のサブセットである実装が存在する場合、システムを保護することができる。

私の友人の一人は、プログラミング競争裁判官に取り組んでいます。プログラムでは、いくつかのテストデータでユーザーが提出したプログラムを実行し、その出力を参照出力と比較します。あなたは他の人々のコードを実行したいが、それらを実行させたくない場合は、コードにすることができます。あなたのシナリオはやや似ていますか?それから、答えは "それは難しい"です。

信頼できないコードをウェブからダウンロードして、マシンにホースを装着しないという保証が必要なのですか?次に、さまざまなWeb言語を見てください。 1つの解決策は、システムコール(JavaScript)へのアクセスを提供しないか、潜在的に危険な呼び出し(JavaのSecurityManager)へのアクセスを制限することです。それらのどれも私が知っている限り、Pythonで行うことはできませんが、あなたはいつもインタープリタをハックし、いくつかのホワイトリストにない外部モジュールの読み込みを禁止することができます。おそらくエラーが起こりやすいでしょう。

ユーザーがプラグインを作成して、アプリケーションのコード本体が何をしているのかわからないようにしますか?ユーザーが.pycファイルを逆コンパイルして変更できるとします。あなたのコードを実行している人がいつもそれを修正し、WoWのための金農場のボットを考えていると仮定してください。

サンドボックス化されたWeb-ishモデルと同様に、Linux専用のソリューションの1つは、AppArmorを使用することです。AppArmorは、アプリケーションがアクセスできるファイルとシステムコールができるファイルを制限します。これは実現可能な解決策かもしれませんが、それについてはあまりよく分かりませんので、 "調査する"以外のアドバイスはできません。

あなたが気になるのは、邪悪な人たちが橋渡しの途中でコードを修正していることです。標準的な暗号ソリューションが存在します(SSL)。あなたが署名したプラグインのみをロードしたいのであれば(ユーザーの操作を制御したいので)、署名コードは正しい解決策のように聞こえるでしょう(ただし、.pycファイルを編集し、署名付きチェック)。

関連する問題