防止从不需要的程序集调用方法

时间:2014-03-13 18:57:55

标签: c# .net security .net-assembly

我有一个程序集可以执行一些“魔法”计算,转换和加密的东西,只能从我的其他程序集中使用。请注意,这些程序集必须安装在客户计算机上,因此恶意攻击者可以对其进行本地访问。 有没有一种安全的方法来实现这一目标?我想我几乎看到了cas,强名称签名,windows srp,混淆,InternalToVisible属性,内部化ILMerge等所有内容。这些方法的问题在于,如果攻击者可以本地访问我的“魔法程序集”,则它们并不完全安全。 你对我有什么建议吗?微软方面还有什么可做的吗? 提前谢谢。

2 个答案:

答案 0 :(得分:3)

基本上,没有。如果本地计算机上的代码可以由一个进程运行,则可以由访问程序集数据的任何进程运行它。有很多种方法可以使它困难但并非不可能。如果攻击者可以访问计算机和时间,则无法阻止访问。

有一种方法可以保护自己:没有本地机器上的代码

  1. 提供远程服务并将其命名为
  2. 在硬件加密狗上提供软件
  3. 使用硬件加密(如可信平台模块)
  4. 特别是对于SQL连接,您可以使用外部可信连接 - 如Active Directory或Kerberos。大多数企业Sql Server都支持这一点。它将要求您的用户“登录”您的应用程序,但.Net支持保护RAM中的凭据

答案 1 :(得分:1)

CanYou可以尝试投资callstack How can I find the method that called the current method?并限制对所需程序集的调用。 我不是一个安全人员,但我认为这个场景有点奇怪,解决你的问题可能不是你目前要求的东西。您是否定义了客户端的易受攻击数据?