.Net如何通过public key/private key实现对assembly的控制访问?
看书看不太懂
大家帮帮忙
问题点数:100、回复次数:11Top
1 楼luohualiushui(落花流水)回复于 2004-05-03 19:40:26 得分 0
upTop
2 楼luohualiushui(落花流水)回复于 2004-05-04 08:27:28 得分 0
upTop
3 楼thinkingforever(努力学习)回复于 2004-05-04 09:05:03 得分 0
upTop
4 楼luohualiushui(落花流水)回复于 2004-05-04 12:33:02 得分 0
upTop
5 楼luohualiushui(落花流水)回复于 2004-05-04 18:10:57 得分 0
UPTop
6 楼redbb(....DB & DEV....抵制日货,人人有责...)回复于 2004-05-04 20:32:20 得分 80
以向程序集分配称为强名称的加密签名,它为程序集提供名称的唯一性并防止他人借用您的程序集名称(名称欺骗)。如果您正在部署一个将被同一台计算机上的多个应用程序共享的程序集,则该程序集必须有强名称。即使只在您的应用程序中使用该程序集,使用强名称也可确保加载该程序集的正确版本。
生成具有强名称的程序集的第一步是获得加密密钥对。.NET 框架 SDK 包括一个可用来生成密钥对的“强名称”工具 (Sn.exe)。由“强名称”工具生成的密钥对可以保留在文件中,您也可以将它存储在本地计算机的“加密服务提供程序”(CSP) 中。下面的命令使用“强名称”工具生成一个新的密钥对并将它存储在名为 TestKey.snk 的文件中:
sn -k Testkey.snk
using System;
using System.Reflection;
[assembly:AssemblyKeyFileAttribute("TestKey.snk")]
Top
7 楼redbb(....DB & DEV....抵制日货,人人有责...)回复于 2004-05-04 20:32:53 得分 0
如何使用全局程序集缓存
全局程序集缓存是计算机级存储区,用于存放要由计算机上的若干应用程序共享的程序集。“.NET 框架”提供两种工具来使用缓存。一种工具是 Windows 外壳扩展程序,它使您可以通过“图形用户界面”(GUI) 使用缓存。另一种是称为“全局程序集”工具 (Gacutil.exe) 的命令行工具,它通常用于生成和测试脚本。该命令行工具称为“全局程序集缓存”工具 (Gacutil.exe)。
全局缓存中的所有程序集都必须有强名称。
查看程序集缓存的内容
使用 Windows 资源管理器定位到 %winnt%\assembly 以激活外壳扩展程序。默认视图显示程序集缓存的内容。您还可以使用“全局程序集缓存”工具的 /l 选项来查看缓存内容:
gacutil /l
安装程序集
若要使用外壳扩展程序来安装程序集,只需将包含该程序集清单的文件拖放到全局程序集缓存目录中即可。若要使用“全局程序集缓存”工具安装程序集,请使用 /i 选项:
gacutil /i math.dll
卸载程序集
若要使用外壳扩展程序删除程序集,请右击它并选择“删除”。还可以使用“全局程序集缓存”工具的 /u 选项:
gacutil /u math,ver=1.0.0.0
附带在 Visual Studio .NET 时间帧中的 Windows 安装程序版本 (1.5) 具有对程序集缓存的本机支持。当用“Visual Studio 部署”工具或其他安装工具创建安装程序包时,可以指定您想安装在缓存中的程序集。通过 Windows 安装程序来使用程序集缓存可为您提供标准安装程序的好处,如按需安装、公布、发布等等。
Top
8 楼hivak47(比尔)回复于 2004-05-04 21:26:00 得分 0
同意 redbb(....Dotneter....) 的说法。Top
9 楼zhougangnj(刚)回复于 2004-05-04 22:52:50 得分 0
studyTop
10 楼turnmissile(会翻跟头的导弹)回复于 2004-05-05 16:27:33 得分 20
通过redbb的方法,是给你所写的assembly设置强名,这样做的方法是告诉其他用户这个assembly在你发表之后没有被别人修改过。基本上那些访问资源的assembly都进行了强名,并且要求其他assembly访问他的时候都要经过强名(当然也有一些是不需要的)。这样就保证了那些没有经过强名的assembly无法通过调用这些有权访问资源的assembly,造成信息的泄漏。
当你所定义的assembly访问了某种资源,而你又能保证这种资源不会被其他引用你的assembly所非法破坏(获取或者修改)。而你又希望所有的assembly都能够正常的访问你所提供的assembly,那么你可以定义你的assembly属性(再assemblyInfo.cs里面)为AllowPartiallyTrustedCallers,这样其他用户就能够不具有强名的情况下访问了。
另外访问控制这个话题,他还这涉及到.net的资源访问的permission,你可以看看cas方面的资料,他和windows的账户权限设定共同组织起了系统安全的防护网。
Top
11 楼cdcjk(攀辉)回复于 2004-05-06 10:36:30 得分 0
upTop




