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

问题描述

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

我有一个命名空间 MyProgram(改变了这个),里面我有命名空间 Network,它包含一些类,在这个命名空间中我有命名空间 Server 和 Client,我打算让服务器和客户端程序简单地使用图书馆。

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

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

解决方法

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

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

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