2

Qtフレームワークを使用してデスクトップアプリケーションを作成し、それを一般に公開する必要があります。しかし、私はこのアプローチの安全性について心配しています。

私は通常PHPでコーディングしているので、SQLインジェクションや、クエリを安全にするためのデータベースを知っていますが、これまで直面したことのない問題に遭遇しました。デスクトップアプリケーションがクライアントからサーバーにクエリを送信するため、聞いたところによると、サーバー間(PHP)ほど安全ではありません。

主なセキュリティリスクは何ですか、Qtがそれらをどのように防ぐか、または特定のコーディング手法によってどのように防ぐことができますか?

申し訳ありませんが、これ以上具体的にすることはできませんが、デスクトップアプリケーションの分野ではあまり経験がありません。

4

2 に答える 2

4

Qtはデータを保護するために何もしません。最初にRDBMSの保護に集中する必要があります。もちろん、すべての入力をチェックしてサニタイズするなどして、意図しない動作を防ぐためにQtクライアントアプリケーションを慎重にコーディングする必要がありますが、配布しない場合は、これが最も差し迫った問題ではありません。

アプリケーションのバックエンドとしてPostgreSQLを使用することを計画している場合は、インターネットへのサービスの公開に伴うリスクを軽減するための対策を講じることができます。最も基本的なもの:

  • 適切なルールでファイアウォールを設定します。信頼できるソースからのインバウンド接続のみを許可します。
  • 自己署名証明書を使用する場合でも、SSL接続のみを受け入れます。
  • 強力なパスワードを適用します。より適切な場合は、クライアント証明書を使用します。
  • pg_hba.conf既知の/信頼できるアドレスからの接続のみを受け入れるようにファイルを設定します。

Debian/Ubuntuには優れたPostgreSQLパッケージがあります。インストール直後は、手動で証明書を生成する手間をかけずに、SSL接続を許可するようにPGを簡単にセットアップできます。

関連するPostgreSQLドキュメント:

必要に応じて、PostgreSQLで動作するように設計された非常に基本的なQtアプリケーションの例(未完成)を提供できます。私に知らせて。

編集:サンプルアプリをGitHubにアップロードしました:exampleapp。片付けようとしましたが、元々スペイン語で書かれた文字列がたくさんあります。いずれにせよ、Qtから始めているのであれば、まだ少し便利なコードを見つけることができます。ああ、私はQt5を使用していて、Qt用に独自のPostgreSQLドライバーをコンパイルする必要がありました(Linuxを使用している場合は大したことではありません)。アプリがQt4でコンパイルされる場合とされない場合があるため、これについて言及します。幸運を!

于 2013-03-02T01:57:56.947 に答える
1

それにかんする

デスクトップ アプリケーションがコンピューターからサーバーにクエリを送信する

あなたが考えている正確な状況はわかりませんが、SQL インジェクションのリスクを軽減するために、この状況でストアド プロシージャを使用できることに注意してください。デスクトップ アプリケーションが db サーバー上の一連のストアド プロシージャを呼び出す権限しか持っていない場合は、リスクが大幅に軽減されます。デスクトップ クライアントがまったく信頼できない場合は、代わりに、クライアント デスクトップ アプリケーションがデータベースに直接アクセスできないようにすることもできます。クライアントのすべてのdbアクセスを行うサーバー上に常駐するレイヤーを作成し、クライアントはdbではなくそれと対話することができます。

于 2013-03-02T01:10:08.153 に答える