2

首先,一个更好的问题是这可能吗?我的直觉是它并不完全,但可能有一些聪明的方法。即使它们只是起到威慑作用,也让某些人更难破解,甚至让我更容易检测到可疑活动。

基本上,我正在使用 PHP 为我的 C#.NET 程序连接到 Web 服务。除其他外,Web 服务服务的最重要目的之一是验证许可证数据。程序发送用户输入的许可证密钥进行检查,如果有效,Web 服务将返回购买许可证密钥的人的姓名,以便程序知道自己激活。

我完全清楚没有完美的反盗版方案,如果人们想要它,我的软件就会被破解。但是,我不相信我可以做任何事情来让人们很难破解我的软件。

我确实有一个 SSL 证书,所以程序将使用 HTTPS 与 Web 服务通信,但这是我目前唯一的安全措施。我想过

  • 使用长而晦涩的名称,以便难以猜测功能
  • 使用 MD5 伪装函数
  • 添加用户名和密码
  • 检查用户代理
  • 等等

但是,我读到有一些应用程序可以简单地从程序中提取字符串,这会使这些措施完全无效。不过,我不知道技术用户必须如何使用这些应用程序。是否仍然值得添加其中一些措施来阻止随意盗版?哪些措施更好,哪些措施最有效?

提前致谢

4

1 回答 1

1

您可以分发捆绑了证书的 C# 应用程序,并使用该证书签署您的请求。然后,服务器可以验证请求是否由您的应用程序签名并拒绝任何其他请求。

编辑:哎呀,我现在才明白,即使在恶意用户手中,您也希望保护您的应用程序。这,我认为是不可能的。黑客可以反编译、扫描内存、读取和解码文件等,如果您将证书与应用程序一起分发,您的证书将在那里可用。另一种方法是分发需要插入客户端计算机的外部安全令牌(硬件设备或闪存)。令牌包含用于签署/加密您的请求的证书、密钥或密码,因此它不会保留在应用程序中。

您的服务器端 SSL 证书只会保证通信通道是安全的,并且服务器不会对他的身份撒谎。它不保证有关客户端连接的任何事情。为了确保客户端被识别,您需要使用服务器识别的客户端证书形式。

于 2013-07-30T15:11:01.047 回答