序章:
私は現在、C / C ++でドキュメント分類ソフトウェアを開発しており、分類には単純ベイズモデルを使用します。しかし、私はユーザーが望む(または将来的に望む)任意のアルゴリズムを使用することを望んでいたので、メインアプリ@アプリの起動に接続されるプラグインとしてアーキテクチャのアルゴリズム部分を分離しました。したがって、どのユーザーもプラグインとして独自のアルゴリズムを記述し、それを私のアプリで使用できます。
問題文:
これを開発する方法は、ユーザーが使用したい各アルゴリズムをDLLファイルにして、特定のディレクトリに配置することです。そして最初に、私のアプリはそのディレクトリ内のすべてのDLLを検索し、それらをロードします。
私の質問:
(1)悪意のあるコードがDLLとして作成され(プラグインフレームワークによって義務付けられているのと同じ機能を持つ)、プラグインディレクトリに配置された場合はどうなりますか?その場合、私のアプリはプラグインと見なしてそれを選択し、その関数を呼び出すため、悪意のあるコードによってアプリ全体が簡単にダウンする可能性があります(最悪の場合、アプリが悪意のあるコードランチャーになる可能性があります!!!) 。
(2)プラグインデザインパターンを実装するために利用できる唯一の方法はDLLを使用していますか?(悪意のあるプラグインを恐れるだけでなく、好奇心からの一般的な質問です:))
(3)多くのソフトウェアは拡張性のためのプラグインモデルで書かれていると思いますが、もしそうなら、それらはそのような攻撃に対してどのように防御しますか?
(4)一般に、拡張性のためにプラグインモデルを使用するという私の決定についてどう思いますか(他の選択肢を検討する必要があると思いますか?)
ありがとうございました
-マイクロカーネル:)