- PR -

アセンブリの署名/遅延署名について

投稿者投稿内容
NothingButXMLInfoSet
大ベテラン
会議室デビュー日: 2002/07/16
投稿数: 116
投稿日時: 2002-10-03 20:45
とりあえず、ここのコードを見てみてください。

#赤字の注意書きも読んだほうがいいと思います。
小野@どっとねっとふぁん
ぬし
会議室デビュー日: 2001/10/30
投稿数: 402
投稿日時: 2002-10-04 10:13
> そう、こう、しているうちに「コードアクセスセキュリティーポリシーツール」
> なるモノに行き当たり、これでバッチファイルを組んでポリシーを設定できることが
> わかりました。ところが、肝心の「アクセス許可セット」をXMLで記述する方法に
> 行き当たりません。

caspol.exeですかね?
このツールを使う場合、XMLは使いません。

caspol -ag 1.3 -url http://www.xxx.jp/xxx/xxx.exe Internet

例えばこのように入力することで指定のURLに存在しているファイルにInternetグループ
に相当する権利を与えることができます。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2002-10-04 15:22
 こんにちは。

引用:

shuさんの書き込み (2002-10-04 10:13) より:
caspol.exeですかね?
このツールを使う場合、XMLは使いません。

caspol -ag 1.3 -url http://www.xxx.jp/xxx/xxx.exe Internet

例えばこのように入力することで指定のURLに存在しているファイルにInternetグループ
に相当する権利を与えることができます。



 ありがとうございます。
 ところで、これは『URLを、「コードグループ」に、既存のアクセス許可セットで追加するとき』、ですよね?『新規のアクセス許可セット』ではないですよね?
 既存(デフォルト)のアクセス許可セットでは、File IOの権限がないので、それを与えたいのです(ダイアログで選択して、「ファイル名」"だけ"をデータベースに登録したいので)。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2002-10-04 15:53
いつもありがとうございます。

引用:

NothingBut.NETFXさんの書き込み (2002-10-03 20:45) より:
とりあえず、ここのコードを見てみてください。

#赤字の注意書きも読んだほうがいいと思います。



 読みました。「マウスの左右ボタンを入れ替えたり、マインスイーパーのスコアをクリアしたり・・・」なんてアメリカンウイット!!

 すみません、本題に入ります。

 「Full Trust」を与える必要はないので、ポリシーを指定しました。ビルド時の「警告 : このセットアップには、… .NET Framework は含まれていません。…Dotnetfx.exe はセットアップによって再配布が可能です。」というメッセージが気になるのですが、とりあえずポリシーの配布ができるか確かめたいので無視しました。

 <strike>できあがったインストーラを動作させると、コードグループと許可セットは作られたのですが、許可セットの中身がありません。コードグループの中身は、指定したモノと一致していましたが、許可セットがNothingなのです。許可セットの中身を設定するためには、何か他のことが必要でしょうか。</strike>
 Full Trustの許可セットができあがっていました!?Newしている許可はどこに行ってしまったのでしょう??
<追記2>
 わかりました。NamedPermissionSetのコンストラクタですね。
 しかし、それはそれとして、問題ではないでしょうか。このインストーラを実行するのに、何の警告もありませんでした。それなのに、特定のサイトからのアセンブリを完全信頼するインストーラができあがりました(今は、それが望みですけれど)。このことを利用すると、「.NET Frameworkだから安全」といいながら、特定のサイトから何でもできてしまうアセンブリを忍び込ませることができるのではないでしょうか。
</追記2>

コード:

Dim nmdPermSet As NamedPermissionSet = _
New NamedPermissionSet("TestPermission")
' ファイルIO
nmdPermSet.AddPermission( _
New System.Security.Permissions.FileIOPermission _
(PermissionState.Unrestricted))
' ファイルダイアログ
nmdPermSet.AddPermission( _
New System.Security.Permissions.FileDialogPermission _
(PermissionState.Unrestricted))

Dim posState As PolicyStatement = New PolicyStatement(nmdPermSet)
Dim memberShip As SiteMembershipCondition = _
New SiteMembershipCondition("TestSite")

' コードグループ
Dim codeGroup As CodeGroup = _
New UnionCodeGroup(memberShip, posState)
codeGroup.Name = "DevGROUP"

' 許可セットとコードグループを追加する
machinePolicy.AddNamedPermissionSet(nmdPermSet)
machinePolicy.RootCodeGroup.AddChild(codeGroup)

' 保存
SecurityManager.SavePolicy()



[ メッセージ編集済み 編集者: Jitta 編集日時 2002-10-04 16:23 ]

[ メッセージ編集済み 編集者: Jitta 編集日時 2002-10-04 16:35 ]
小野@どっとねっとふぁん
ぬし
会議室デビュー日: 2001/10/30
投稿数: 402
投稿日時: 2002-10-04 15:55
caspol -lp
で既存の許可セットがどのような形になっているかをみることができます。
ここでの記述を参考にして、自分がつくりたい許可セットのxmlファイルを
作成し、その後
caspol -ap ファイル名
としてやると、あらたな許可セットを追加できるようです。
あとはその許可セットをどのような形で割り付けるかを考えればいいですね。

caspol /? でヘルプがでるので、よく見れば使い方はわかるんじゃないかと。。。

スキルアップ/キャリアアップ(JOB@IT)