0

これが私がやりたいことであり、この分野の経験を持つ一部の人々がこれをどのように行うかを知りたいです:

http サーバーから取得する 3 つの POST 要求を使用します。

  1. ウィジェットとレイアウト
  2. 次に、アプリのロジック (最小限)
  3. データ

または、最初の 2 つまたは 3 つすべてを組み合わせた方がよい場合もあります。私はpyqtの使用を考えています。.ui ファイルをロードできると思います。json データを解析できます。ネットワーク経由でコードを渡してクライアントで実行するのはかなり危険だと思います。誰かが接続をハイジャックしたり、アプリの設定を変更して偽のサーバーにアクセスしたりできる場合、それは厄介なことです。

すべてのクライアントを最新の状態に保つため、このようにしたいと考えています。これは webapp のようなものですが、Qt のおかげでよりシンプルです。基本的に、「シン」アプリは、サーバーからデータをロードするコンパイル済みの最小限の Python ファイルです。

クライアントにセキュリティの問題を導入せずにこれを行うにはどうすればよいですか? httpsで十分ですか?ある種のサンドボックスでpyqtを実行する方法はありますか?

PS。私は Qt や python にこだわっていません。コンセプトは好きだけど。サーバー側またはクライアント側の Java を使用したくありません。

4

2 に答える 2

1

「コード」を送信せずにサーバーからクライアントに「アプリロジック」を送信したいというあなたの願望は、本質的に自己矛盾していますが、送信している「ロジック」が単純化された広告に含まれていても、まだ気付いていないかもしれません-ホック「言語」(言語とは考えていません;-)、すべての意図と目的に対して、Pythonコードはその言語を解釈し、それによってそのコードを実行します。物事をある程度「サンドボックス化」することはできますが、最終的にはそれがあなたがしていることです。

ハイジャックやその他のトリックを回避するには、代わりに、HTTPSクライアントでサーバーの証明書を使用して検証します。これにより、心配しているすべての問題から保護されます (HTTPS 証明書の検証を無効にするのに十分なほどアプリを編集できる人がいる場合、彼らは編集できますサーバーからそのコードを送信する必要なく、必要なコードを実行するのに十分です;-)。

httpsを使用すると、サーバーにPythonモジュールを送信させ(クライアントで複数のPythonバージョンをサポートする必要がある場合はソース形式で、それ以外の場合はバイトコードで問題ありません)、クライアントはそれらをディスクに保存し、インポート/リロードします大丈夫です。基本的には、「プラグイン」が実際にサーバーから送信される (特定の場所のディスク上で見つかるのではなく) 古典的な「プラグイン アーキテクチャ」の変形を行うことになります。

于 2010-08-19T00:40:41.407 に答える
1

Webブラウザを使用してください。これは、十分に文書化されたシステムであり、必要なすべてを実行します。また、ブラウザで簡単なグラフィカル アプリケーションを作成するのも比較的高速です。私の推論の例:

編集:

  • ネットワーク経由で転送されたコードの安全な Python インタープリターとして、PyPyサンドボックス インタープリターを試すことができます。

  • 次に、最も簡単な解決策があります。Python モジュールをネットワーク経由で送信し、署名および/または暗号化するだけです。これは、すべての Linux ディストリビューションが機能する方法です。ローカル コンピューターに暗号化トークンを格納します。サーバーは、コードを送信する前に、一致するトークンを使用してコードに署名/暗号化します。GPGはそれを行うことができるはずです。

于 2010-08-19T02:15:12.803 に答える