在客户端程序中也使用的库中包含服务器逻辑是否安全?

Is it safe to include server logic in a library that's also used in client programs?

我最近又开始了一些编码,这次是在 C# 中。目前我正在编写一个程序,我有一个专用的服务器和客户端。但是,目前我一直在 class 库中编写所有代码。我正在使用 Visual Studio.

我有一个命名空间 MyProgram(更改了这个),里面有一个命名空间 Network,其中包含一些 classes,在这个命名空间中我有命名空间 Server 和 Client,我打算制作服务器和客户端程序仅使用该库。

这安全吗,或者 我应该简单地将服务器代码移动到服务器程序本身,远离 class 库 ?我计划将该库包含在客户端程序中,因为该库具有所有功能。 (而且我计划让几个不同的程序使用相同的库,但有一些差异,例如环境等)

编辑:我担心的是“破解”DLL(或 E​​XE 就此而言)以找到底层代码(可能还有一些秘密)有多容易。

反编译.NET代码就像喝一杯水一样简单。您可以使用 dotPeek 或 Reflector 等工具自行尝试。

您可以混淆代码,但它始终是可读的,所以不要将秘密放在客户端程序集中。

如果您必须这样做,请确保进行一些加密。您可以使用像 Intellilock 这样的工具来创建与管理机密的硬件相关的许可证文件。无论如何,您永远不会达到 100% 的安全性。