DOBON.NET DOBON.NETプログラミング掲示板過去ログ

プラグイン実装について

環境/言語:[OS : Windows XP / 言語 : C#]
分類:[.NET]

いつも参考にさせてもらっています。

"プラグイン機能を持つアプリケーションを作成する" の記事を参考に、プラグイン機能を実装してみましたが、一つ気になることがあります。

プラグイン内で悪意のあるコードを記述出来てしまうのでは? ということです。

例えば、上記記事内"プラグインの作成"の例として書かれている CountChars クラス。
その Run()関数内で、何らかのファイル削除処理を書いてしまう。
ということも出来ると思いました。

一般的に、プラグインを公開してユーザー側で自由に作成できるアプリは、そのあたりをどのように対処しているんでしょうか?

よろしくお願いします。
2009/10/03(Sat) 18:26:12 編集(投稿者)

■No25495に返信(bokkuriさんの記事)
> プラグイン内で悪意のあるコードを記述出来てしまうのでは? ということです。
> 例えば、上記記事内"プラグインの作成"の例として書かれている CountChars クラス。
> その Run()関数内で、何らかのファイル削除処理を書いてしまう。
> ということも出来ると思いました。
基本的にはプラグイン、あるいはプラグインの作者を信頼できるかどうかに委ねられます。
これは、プラグインに限らず、アプリケーション全般に渡って言えることです。
例えば、便利なツール(or プラグイン)と思ったら実はスパイ機能が含まれていたという可能性もあります。

> 一般的に、プラグインを公開してユーザー側で自由に作成できるアプリは、そのあたりをどのように対処しているんでしょうか?
何もしていないということもありますし、プラグインを初めて読み込む前にユーザに確認することもあります。

プラグインは自由にプログラミングを認めることでアプリケーションを拡張するスキームなので、悪意ある処理を制限するためには、自由を認める部分と制限するべき部分を切り分けて、制限するべき部分を具体的に拒否できる仕組みを考える必要があります。

(コードアクセスセキュリティが近い考えのはずだけど、ローカルにあるアセンブリは Full Trustになって使えないかもしれません。試していません)

これらの事情を踏まえてきっちりと対策しているプラグイン対応アプリケーションは少ないかもしれません。
> プラグインは自由にプログラミングを認めることでアプリケーションを拡張するスキームなので、悪意ある処理を制限するためには、自由を認める部分と制限するべき部分を切り分けて、制限するべき部分を具体的に拒否できる仕組みを考える必要があります。
> (コードアクセスセキュリティが近い考えのはずだけど、ローカルにあるアセンブリは Full Trustになって使えないかもしれません。試していません)
>
> これらの事情を踏まえてきっちりと対策しているプラグイン対応アプリケーションは少ないかもしれません。

なるほど。
プラグインとはそういうものなんですね。
インターフェースの関数にパスワードのようなものを返す関数を用意して、信頼できる人にだけ伝える。
正しい物が実装されているときだけ、そのプラグインが呼び出される。というのもありかな、と思いました。

コードアクセスセキュリティというのもちょっと見てみましたが、面白そうですね。
またあとで調べてみようと思います。

レスありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板