如何使 public 静态 class "secure"?

How can I make a public static class "secure"?

我正在寻找使用 public 静态方法为 public class 创建一个安全包装器,所以假设 class 非常简单:

public class MyClass {
      public static int Add (int first, int second)
      {
          return first + second;
      }
}

我想让一个客户端需要通过一些安全的其他 class 来访问它,它将调用 MyClass。在一天结束时,我希望将所有这些代码放在一个 dll 中供客户使用。目的是要有一些行为,如:

public class SecureMyClassWrapper
{
    bool _isUnlocked;
    private static readonly List<string> validIds = new List<string>(){"only me", "and them"};

    public SecureMyClassWrapper(string id)
    {
        if (validIds.Contains(id))
        {
            _isUnlocked = true;
        }
        else
        {
            _isUnlocked = false;
        }
    }

    public int Add(int first, int second)
    {
        if (_isUnlocked)
        {
            return MyClass.Add(first, second);
        }
        else
        {
            // throw security exception etc.
        }
    }
}

黑客攻击能力比我强的人很可能会想要获取我的静态方法,所以请有人建议为什么这可能是一个糟糕的方法,或者我应该在这里关注什么?有些想法是

在这些情况下我如何防止反射或反编译?您是否会推荐一种标准方法,例如代码访问安全性?

在另一台机器上的服务 运行 中托管您要保护的代码。并使用接口公开 api。

保护您的 .Net 代码 的唯一方法是使用 Obfuscator。然而,它只做了这么多,所以它仍然可以破解。即使是非 .Net 代码也很容易破解,更改其堆和堆栈等通常是为了绕过商业软件的电子注册过程。

如果您要处理一些非常敏感的代码,您可以随时将其放在云服务器上,但这当然意味着每月费用。在那种情况下,您可能还需要同样昂贵的安全流量 (https)。

最终,在处理代码的安全性时,您必须权衡成本与收益。最好的做法是以开源的方式编写您的代码,并且仍然不会危及您的用户安全或数据。