全国咨询热线:18720358503

保护你的DLL和Code不被别人使用

类别:企业动态 发布时间:2021-01-08 浏览人次:

大家在做网站建设项目开发时一般都是分层的,比如UI层,业务层,数据库访问层。ess.dll),ess.dll中的方法。ess.dll并调用其中的方法搞破坏。比如可以直接使用里面的ChangePwd(string UserName,string Pwd)方法把其他用户的密码改了,这个时候就你就.......
好了,该开始说怎么保护我们的代码了:
首先我们需要把我们的程序集做成强命名的程序集。
这里我们在.NET 命令提示中输入sn -k c:\test.snk 创建一个新的随机密钥对并将其存储在 c:\test.snk 中
然后新建立类库ClassLibrary1,里面只有个类文件Class1.cs,不修改WindowApplication的AssemblyInfo.cs。
在这里就可以直接运行了,不过大家都看的出来,这样是能成功调用Class1中的方法的。
现在让我们来修改下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());
}
using System;
using System.Security.Permissions;
namespace ClassLibrary1
{
[StrongNameIdentityPermissionAttribute(SecurityAction.LinkDemand, PublicKey =
"4edd1600"+
"4feace9b2aedd620def472"+
"8b4f088291cfa77a40659afba611fdafbb7894b93a64049d439936bd0cd8dc0704625aeb735892"+
"e9eb3f910a49a2925af10515d935654d7adac5567ff6d780d23d587de0ff4d271da7b30680fa88"+
"a47a4ba4")]
public class Class1
{
public Class1()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public string Insert()
{
return "ok";
}
}
}
然后再编译后运行windowapplication调用class1中的方法就会出错。
这里的StrongNameIdentityPermissionAttribute是NET提供的CAS(Code Access Security)中的1个类,具体可参考MSDN,SecurityAction.LinkDemand 是要求直接调用方已被授予了指定的权限,这里即windowapplication要授予了权限才行,如果使用SecurityAction.Demand要求调用堆栈中的所有高级调用方都已被授予了当前权限对象所指定的权限。他们的区别是:如果windowapplication已授权访问,而还有个windowapplication2(未授权访问)通过调用windowapplication中的button1_Click方法来调用class1,这个时候如果使用SecurityAction.LinkDemand就能成功调用,而使用SecurityAction.Demand windowapplication2就不能调用,windowapplication 在这2种情况下都能调用。
说到这里大家一定再问PublicKey=后面一串那么长的字符串怎么来。PublicKey后面的字符串是你开始生成的c:\test.snk文件中保存的公钥。那怎么才能看到这个公钥了,照样是用SN.EXE。
输入sn -p c:\test.snk c:\publicKey.snk (从 test.snk 中提取公钥并将其存储在 publicKey.snk 中)
再输入sn -tp c:\publicKey.snk (显示公钥信息)
上面这个命令就能看到PublicKey后面的字符串了,还想什么啊,把那字符串copy下来啊。
最后大家一定在关心这个时候windowapplication 要怎么调用class1了,其实也简单,只要把windowapplication 的AssemblyInfo.cs修改为:
[assembly: AssemblyKeyFile("c:\\test.snk")]
到这里就一切OK了,大家都看到最关键的就是test.snk文件了,所以一定要保护好你自己的test.snk文件。
好啦,做完以上工作,设计师们就不用担心自己的辛苦成果被盗用了哦。
下一篇:没有了

推荐阅读

保护你的DLL和Code不被别人使用

大伙儿在建立网站基本建设新项目开发设计时一般全是层次的,例如UI层,业务流程层,数据信息库浏览层。ess.dll),ess.dll中的方式。ess.dll并启用在其中的方式捣乱。例如能够立即应用...

2021-01-08
学校网站建设方案范文

在互连网髙速发展趋势的今日,网站已经变成院校、企业、公司、 政府部门及团队开展品牌形象的展现、信息内容公布、业务流程扩展、顾客服务、內部沟通交流的关键阵营,它不仅...

2021-01-08
企业网站建设提升要做好哪几方面的工作

谢谢大伙儿关心《公司企业网站建设提高要搞好哪几层面的工作中》话题讨论,搜易高新科技()投身公司企业网站建设、网络推广服务1六年,针对《公司企业网站建设提高要搞好哪几层...

2021-01-08
微博营销的精髓在于精准数据挖掘

新浪微博是当下最时兴的社交媒体手机软件之一。同时新浪微博营销推广也是现如今流行的营销推广方法之一。如今玩新浪微博的人会有人比较多,做新浪微博营销推广的人也是有许多...

2021-01-08
我的5年建网站心得-深圳网站建设

灵点互联网是一家技术专业互连网知名品牌企业网站建设服务提供商,技术专业致力于于深圳市企业网站建设、手机微信微信小程序开发设计、APP开发设计等互连网业务流程坚定信念...

2021-01-08
如何将内容质量与SEO优化实践相结合?

以前有一一段时间,有SEO专业知识的网站站长其实不关注网网站内部容,仅仅想尽办法来提高网站的总流量,包含用许多的重要词添充內容,以致于浏览者不明白內容。还两者之间他网...

2021-01-08
X

400-8700-61718720358503
企业邮箱2639601583@qq.com
官方微信