码迷,mamicode.com
首页 > 其他好文 > 详细

使用强命名程序集防范篡改

时间:2015-08-15 13:32:06      阅读:224      评论:0      收藏:0      [点我收藏+]

标签:

CLR支持两种程序集:强命名程序集、弱命名程序集,两者的区别在于,强命名程序集是被发布者使用了自己的公钥/私钥对进行了程序集的签名,能唯一性标识程序集的发布者的程序集,并且可以使用密钥对程序集进行唯一性标识、保护和版本控制,这里所提到的保护就是我们需要一起讨论的程序集防篡改。

  首先我们一起来看个例子,这样能简单明了地说明使用强命名程序集的必要性。

  我们建立一个WinForm程序Nick.WinFormApp,添加一个登录窗体,并且在此项目内引用名为Nick.AuthProvider的程序集,用于登录的时候进行身份验证。

  技术分享


在Nick.AuthProvider程序集中添加类AccessHandler.cs,用于实现身份验证过程,代码如下  

技术分享
namespace Nick.AuthProvider
{
///<summary>
/// 作者:MitnickZhou
/// 出处:http://www.cnblogs.com/mitnickzhou/
///</summary>
public class AccessHandler
{
public static bool CheckValid(string userName, string passWord)
{
if (userName.Equals("Nick") && passWord.Equals("Zhou"))
{
return true;
}
return false;
}
}
}
技术分享


并在LoginForm中添加如下代码,用于显示登录结果,只有当我们在登录窗体中,输入用户名:Nick,密码:Zhou 的时候,系统才会让我们登录成功。

技术分享
        private void btnLogin_Click(object sender, EventArgs e)
{
string resultMsg =
AccessHandler.CheckValid(this.txtUserName.Text, this.txtPassWord.Text).ToString();
MessageBox.Show(resultMsg);
}
技术分享



  好,假如这时我们的程序已经开发完成,可以将其发布出去了,编译之后需要发布的文件如下:
  技术分享

  运行程序,输入用户名和密码,并点击登录,如我们所期望的那样,只有输入了正确的用户名和密码后,程序才会提示登录成功。那么假如说其他别有用心的人,知道了Nick.AuthProvider.dll这个程序集的作用之后,可以做什么事情呢?我们一起来看看。 


  重新建立一个新的程序集,取名也叫做Nick.AuthProvider,并且添加AccessHandler的类型。  

  技术分享


  AccessHandler内的代码如下,对于任意用户名和密码,都返回验证通过。

技术分享
    public class AccessHandler
{
public static bool CheckValid(string userName, string passWord)
{
return true;
}
}
技术分享

使用强命名程序集防范篡改

标签:

原文地址:http://www.cnblogs.com/aaa6818162/p/4732301.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!