大家做项目开发一般都是分层的,比如UI层,业务层,数据访问层。业务层引用数据访问层的DLL(比如dataAccess.dll),并使用dataAccess.dll中的方法。当项目完成并给客户用了,可有些心里BT的客户这个时候也可以请个稍微懂NET的人来引用你的dataAccess.dll并调用其中的方法搞破坏。比如可以直接使用里面的ChangePwd(string UserName,string Pwd)方法把其他用户的密码改了,这个时候就你就.......
具体我不知道怎么做,我想实现的是dataAccess.dll只有我能调用,其他外部不能调用急用,谢谢!
具体我不知道怎么做,我想实现的是dataAccess.dll只有我能调用,其他外部不能调用急用,谢谢!
sn -k c:\Key.snk 生成密钥对snk文件. 程序集中:[assembly: AssemblyKeyFile("c:\\Key.snk")]
sn -p c:\Key.snk c:\public.snk 从密钥对中提取公钥
然后用下面的命令:
sn -tp c:\public.snk 公钥值, 把它传给StrongNameIdentityPermissionAttribute的PublicKey,形如:
[StrongNameIdentityPermissionAttribute(SecurityAction.LinkDemand, PublicKey="00240000048...97e85d098615")]
public class dataAccess{...}这样为dataAccess指定了PublicKey属性,只有与PublicKey配对的私钥签署的程序集才能创建dataAccess的实例。
因为业务层要访问 dataAccess.dll 所以 dataAccess.dll里面的类肯定是pulibc 的吧@!
这样的话,所有人拿到dataAccess.dll都能调用! 所以想让dataAccess.dll只能给业务层访问不能给其他人访问
[email protected] 谢谢
找了下资料:得到这么两句
在 .NET Framework 1.0 和 1.1 版中,即使调用程序集受到完全信任,对标识权限的要求也仍然有效。即,即使调用程序集已获得完全信任,如果该程序集不满足要求的条件,对标识权限的请求也将失败。在 .NET Framework 2.0 版中,如果调用程序集已获得完全信任,则对标识权限的要求将无效。这样做可确保所有权限的一致性,避免了标识权限的处理特殊化现象。
混淆器是种方法而已.
我有点不明白.为什么你的修改密码的函数不需要提供原始的用户名和密码就能修改?
如果这个方法是administrator的, 客户没权限去操作,那你何不把这个函数和所有administrator的方法都独立到另一个DLL中不发给客户.
不能限制调用着了???
ChangePwd(string UserName,string Pwd)不是只针对这个方法,如果是AddUser()添加用户!!!
本来添加用户是管理员才可以添加的!
我只要找到这个DataAcces.Dll的入口就能添加用户,根本前面没有经过我的业务层的判断是否是管理员归根到底是就不想用户非法操作数据层!!一定要经过业务层的验证,让业务层进行调用数据层!
大家能否看下这个例子!!!我是试过了,照了上面说了!!没出现效果,不知道怎么搞!!郁闷ING..............
请参考:
http://msdn.microsoft.com/zh-cn/library/system.security.permissions.strongnameidentitypermission(VS.85).aspx
方法只有你把源代码隐藏
不让他们看到源代码
这样就不能修改代码
自然就不会调用你的dll了
我想我最终的目的是安全性!即使服务器被人入侵话,被人更改ASPX,看到一些重要数据的话!那不好!!
数据的安全我是放在第一位的,功能的话都是大同小异!
混淆后自己都无法调用了,可能是因为aspx也被混淆后的DLL视为外部调用了!
.aspx文件也能混淆??????貌似只有DLL和EXE文件才能用混淆器吧???
可以上面提及的dll混淆,加强名称方法。
可以上面提及的dll混淆,加强名称方法。