安全的软件许可证检查/验证

时间:2014-01-12 00:22:46

标签: c# php mysql security

我正在使用带有许可证密钥和唯一机器ID(MAC代码,CPU代码和其他组合)的MySQL数据库在我的软件中实施许可系统。我一直在寻找一种安全的方法来检查用户在C#应用程序中输入文本框的许可证密钥的有效性。我当前的方法是连接到一个简单的PHP文件,如http://example.com/checklicense.php?=LICENSEKEYGOESHERE,并返回“VALID”(+机器ID)或“INVALID”字符串。然后我将访问此文件并使用WebClientWebRequest从C#应用程序获取返回字符串。

显然,使用这种当前方法是不安全的,因为您可以将URL重定向到localhost并伪造结果。我想我真正的问题是,使用这种方法,我怎样才能使它更安全?有没有办法让我的C#应用​​程序通过签名或其他东西来识别它是否连接到真正的PHP文件?

1 个答案:

答案 0 :(得分:2)

您的许可证服务器必须向软件提供重要信息,而不是简单的“有效/无效”标志,如果您想确保它不容易伪造。此外,服务器的答案应该以不可预测的方式随时间变化,否则它几乎不比以前的标志解决方案好。

请注意,另一方面,如果服务器出现故障,您必须让客户知道他们的软件将停止工作。我敢打赌,如果你没有告诉他们你会得到一些愤怒的电话和诉讼威胁,并且在你的之夜中断事情......准备好保证你的执照100%正常运行时间服务器24/7。