0

C++ を使用してプロ ユーザー向けのデスクトップ アプリケーションを作成しています。私の現在の設計は、API が TCP/IP に基づいているサードパーティの C++ コンポーネントに依存しています。このコンポーネントを統合するには、ネットワーク コードを従来の C++ API に置き換えるように変更する必要がある場合があります。

コンポーネントを変更せずにそのままにして、ネットワーク経由で期待どおりに通信できれば、はるかに簡単になります。そのためには、コンポーネントをサーバーとして実行し、ループバック接続のために高いポートをリッスンする必要があります。

このループバック アプローチには 2 つの懸念があります。誰かが私の恐怖を和らげたり確認したりできますか?

信頼性とパフォーマンス ループバック接続が失敗したり、ウイルス対策ソフトウェアによってブロックまたは傍受される可能性があります。このようなもの:ループバック接続はユーザーのコンテキストで機能しますが、ローカル システム アカウントからは機能しません

セキュリティ 誰かが私のループバック パケットを傍受することはあまり心配していませんが、サーバー自体がセキュリティ リスクになることは望んでいません。プロセスが高いポートでリッスンするのは危険ですか?

多くのデスクトップ アプリケーションはこのように動作しますか?

最初は Windows で開発していますが、将来的には Mac と Linux に移行する可能性があるため、この質問はすべての一般的なデスクトップ OS に当てはまります。

4

1 に答える 1

1

信頼性: コンポーネント自体が信頼できる場合、ループバック インターフェイスをリッスンすることに問題はありません。コンポーネントが信頼できない場合は、関数を直接呼び出すのではなく、ループバック インターフェイスを介してコンポーネントと対話することをお勧めします。切断を簡単に処理してコンポーネントを再起動して作業を続行できますが、コンポーネントにリンクするとコンポーネントが失敗し、アプリも失敗します。

パフォーマンス: パフォーマンスが低下します。現在のCPUパワーではそれほど大きくありません。ほとんどのアプリケーションで許容されるはずです。

セキュリティ: セキュリティの問題を回避するために、コンポーネントは localhost アドレスにバインドする必要があります。しかし、十分なアクセス レベルを持つローカルのサード パーティ ソフトウェア (ウイルス) ソフトウェアは、通信ストリームを傍受したり、変更することさえできます。他の通信手段でも同じです。

ループバック接続は広く使用されています (java は相互通信に使用し、named はマスター サービス コントロールに使用するなど)。

于 2012-02-10T13:00:28.377 に答える