C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: プラグイン(拡張機能)での権限管理


(過去ログ 121 を表示中)

[トピック内 8 記事 (1 - 8 表示)]  << 0 >>

■72341 / inTopicNo.1)  プラグイン(拡張機能)での権限管理
  
□投稿者/ azutake (7回)-(2014/06/04(Wed) 23:40:12)

分類:[C#] 

現在, C#にてプラグイン機能を持つプログラムの開発を行っております.
その際に個人情報を扱うAPIを作成しましたので, プラグインがその機能を使用するかどうかを利用者に提示してから
インストール/キャンセルの選択をしてもらおうと考えております.
そのため, プラグインがとあるグループ権限(例:アカウント情報)を使用するという提示をmanifestなどで行い, ホストアプリケーションは
それに対する権限の付与を行うようにしたいのです.
また, 今回の開発で前提となりますが, 例で指定したアカウント情報を取得するには権限が無いと取得出来ないようにしたいと考えています.
具体的にソフトウェア等の例を挙げるとChromeやAndroidなどと同じような機能となると思います.
このような物はどのようにすれば実装出来るでしょうか.
よろしくお願い致します.

#開発環境
Visual Studio 2013 Professional
.Net Framework.4.0
C#
引用返信 編集キー/
■72380 / inTopicNo.2)  Re[1]: プラグイン(拡張機能)での権限管理
□投稿者/ 渋木宏明 (21回)-(2014/06/05(Thu) 23:39:00)
渋木宏明 さんの Web サイト
> その際に個人情報を扱うAPIを作成しましたので, プラグインがその機能を使用するかどうかを利用者に提示してから
> インストール/キャンセルの選択をしてもらおうと考えております.

・プラグインがどんな機能を使用するのか問い合わせるためのインターフェースを定義
・プラグインに↑を実装
・アプリケーションがプラグインを読み込む際に↑インターフェース経由で問い合わせを行い、必要に応じてユーザに確認

みたいな流れでどうですか?

プラグインからアプリケーションの機能を公開するのも、クラスメソッドをそのまま見せるのではなくてインターフェース経由にすれば、プラグインに見せる実装を裏で入れ替えられますよね。

引用返信 編集キー/
■72386 / inTopicNo.3)  Re[2]: プラグイン(拡張機能)での権限管理
□投稿者/ 渋木宏明 (23回)-(2014/06/06(Fri) 09:49:37)
渋木宏明 さんの Web サイト
2014/06/10(Tue) 00:25:23 編集(投稿者)

> みたいな流れでどうですか?

サンプル書いてみました。

https://github.com/hidori/Samples/tree/master/PlugIn-20140605
引用返信 編集キー/
■72389 / inTopicNo.4)  Re[3]: プラグイン(拡張機能)での権限管理
□投稿者/ azutake (8回)-(2014/06/06(Fri) 10:47:42)
わざわざサンプルまで書いていただけるとは・・・
おかげさまで今回質問した問題を解決・実装できました.
ありがとうございます!
これにて解決済みにさせていただきます.

No72386 (渋木宏明 さん) に返信
>>みたいな流れでどうですか?
>
> サンプル書いてみました。
>
> https://github.com/hidori/Samples/tree/master/20140605
解決済み
引用返信 編集キー/
■72404 / inTopicNo.5)  Re[1]: プラグイン(拡張機能)での権限管理
□投稿者/ 渋木宏明 (24回)-(2014/06/07(Sat) 10:36:35)
渋木宏明 さんの Web サイト
2014/06/07(Sat) 10:37:08 編集(投稿者)

解決済みになっていますが、ちょっと気になったので。。

プラグインに課す制限ですが、どれくらいの強度が必要でしょう?

機能的には先に示したサンプルでOKと思いますが、悪意を持って作成されたプラグインに対してはぶっちゃけ無防備です。

プラグインがアプリケーションと同じ AppDomain で動作する場合、Reflection を使用すればプラグインはアプリケーションの内部情報を触り放題です。

さらに言うと、プラグインが同一プロセス内で動作するなら、Win32 レベルではなんでもやり放題です。

仮にプロセスを分離したとしても、プラグインが元のアプリケーションと同じ権限で動作するならやりようがないわけではありません。

。。。といった具合に、求められている要件によってはかなり複雑な実装が必要になります。

特に前提としてそうった条件は示されていなかったのですが、大丈夫ですよね?
解決済み
引用返信 編集キー/
■72408 / inTopicNo.6)  Re[2]: プラグイン(拡張機能)での権限管理
□投稿者/ なちゃ (2回)-(2014/06/08(Sun) 01:04:13)
PermissionSetで必要な権限だけを軒並み列挙して、プラグインに制御を渡す前にPermitOnlyでコードアクセス許可を制限するとかしたらできるかも…
引用返信 編集キー/
■72411 / inTopicNo.7)  Re[3]: プラグイン(拡張機能)での権限管理
□投稿者/ 渋木宏明 (26回)-(2014/06/08(Sun) 07:23:28)
渋木宏明 さんの Web サイト
> PermissionSetで必要な権限だけを軒並み列挙して、プラグインに制御を渡す前にPermitOnlyでコードアクセス許可を制限するとかしたらできるかも…

.NET Framework 4 以降だと、CAS は非推奨&デフォルト OFF じゃなかったでしたっけ?
引用返信 編集キー/
■72415 / inTopicNo.8)  Re[4]: プラグイン(拡張機能)での権限管理
□投稿者/ なちゃ (3回)-(2014/06/08(Sun) 10:32:04)
No72411 (渋木宏明 さん) に返信
>>PermissionSetで必要な権限だけを軒並み列挙して、プラグインに制御を渡す前にPermitOnlyでコードアクセス許可を制限するとかしたらできるかも…
>
> .NET Framework 4 以降だと、CAS は非推奨&デフォルト OFF じゃなかったでしたっけ?

CASが廃止というか、CASのポリシーによるアクセス許可設定が廃止、ですかね。
CAS自体は仕組みが強化されたりしてますが残ってます。

本来はAppDomain作ってサンドボックス化までするのが正しいとは思います(これもCASであることには違いないですが)。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -