使我的dll只能由我的exe访问的最佳方式



出于安全考虑,我正在寻找一种方法,使我的Data.dll只能从我的exe访问。

"Friend Assemblys"方法是否安全?似乎如果我有其他同名的exe,我可以看到对象并执行dll中标记为内部的方法。

这是最好的方式吗?还有别的办法吗?

您可以使用强名称。比如:

[程序集:InternalsVisibleTo("Friend1,PublicKey=002400000480000009400000006020000002400005253413010004000000100bf8c25fcd44838d87e245ab35bf73ba2615707feea2957095599b3d903fb95a933d2729967c3184a97d7b84c7547cd87e435b56bdf8621bcb62b59c00c88bd83aa62c4fcdd4712da72eec2533dc00f8529c3a0bbb4103282f0d894d5f34e9f0103c473dce9f4b4575eefd8f920d8681]ed6dfcb0a81e96bd9b176525a26e0b3")]

来自:MSDN

注意:当前程序集和朋友程序集都必须是未签名,或者两者都必须使用强名称签名

如果应用程序需要管理用户或出于安全目的不希望包含在DLL中的功能,则应公开一个安全的web服务,该服务可以对登录到应用程序的用户进行身份验证,并在服务器级别执行操作。当然,这是假设您需要管理的是共享的,而不是特定于客户端的机器。

最新更新