|
大家做项目开发一般都是分层的,比如UI层,业务层,数据访问层。业务层引用数据访问层的DLL(比如dataAccess.dll),并使用dataAccess.dll中的方法。当项目完成并给客户用了,可有些心里BT的客户这个时候也可以请个稍微懂NET的人来引用你的dataAccess.dll并调用其中的方法搞破坏。比如可以直接使用里面的ChangePwd(string UserName,string Pwd)方法把其他用户的密码改了,这个时候就你就.......
好了,该开始说怎么保护我们的代码了:
首先我们需要把我们的程序集做成强命名的程序集。
这里我们在.NET 命令提示中输入sn -k c:\test.snk 创建一个新的随机密钥对并将其存储在 c:\test.snk 中
然后新建立类库ClassLibrary1,里面只有个类文件Class1.cs,代码如下: 1using System; 2 3namespace ClassLibrary1 4{ 5 public class Class1 6 { 7 public Class1() 8 { 9 // 10 // TODO: 在此处添加构造函数逻辑 11 // 12 } 13 14 public string Insert() 15 { 16 return "ok"; 17 } 18 } 19} 20 AssemblyInfo.cs代码: //............其他的就用默认 [assembly: AssemblyKeyFile("c:\\test.snk")] // 连接上面用强命名工具SN.exe生成的文件.
接着创建个WindowApplication来调用我们的ClassLibrary1,代码: private void button1_Click(object sender, System.EventArgs e) { MessageBox.Show(new ClassLibrary1.Class1().Insert()); }不修改WindowApplication的AssemblyInfo.cs。 在这里就可以直接运行了,不过大家都看的出来,这样是能成功调用Class1中的方法的。
现在让我们来修改下Class1.cs,代码: using System; using System.Security.Permissions;
namespace ClassLibrary1 { [StrongNameIdentityPermissionAttribute(SecurityAction.LinkDemand, PublicKey =
上一篇:美妙景色 用Coreldraw制作水中嬉戏的鱼
下一篇:关于asp.net 1.0升级到asp.net 2.0时发现的一个有趣的问题
|