【问题标题】:Will PHP's gethostname and gethostbyname always work?PHP 的 gethostname 和 gethostbyname 是否总是有效?
【发布时间】:2012-12-18 12:15:15
【问题描述】:

我正在开发一个 PHP 应用程序,该应用程序需要锁定到特定的服务器 IP 地址,以便人们无法轻松地将其复制到其他服务器。该应用程序将安装在客户办公室的内部服务器上。

我有一个编码的许可证文件,其中存储了允许的服务器 IP 地址,并且在登录页面上我想检查它是否与服务器的 IP 匹配。

为此,我使用以下代码:

if(getHostByName(getHostName()) != $licensedServerIp){
  throw new Exception("The server's IP address does not match that in your license file.");
}

这在我的开发机器上运行良好,但是有什么情况我需要注意这个函数会失败的地方吗?我不知道该功能在后台实际执行的操作 - 某些网络问题会阻止它工作吗?

【问题讨论】:

  • 我不确定我是否明白这一点:这将检查像192.168.0.15 这样的本地 IP 地址,对吧?这意味着本地网络结构中的任何内部更改都会破坏您的应用程序,并且只要获得正确的服务器 IP,就可以在其他本地网络中运行任意数量的非法副本。除了让客户的生活更加困难之外,这还能实现什么?
  • 如果服务器没有适当的 DNS 设置,它将失败。如果有人打开您的源代码并删除检查,它也会失败。 PHP 是一种开源语言,很难像这样锁定应用程序 - 专注于从支持中赚钱,而不是试图创建一个万无一失的许可系统(因为没有一个)。
  • 我认为你提出了一些非常有效的观点!有没有其他方法可以阻止 PHP 代码在其他服务器上运行?
  • 我也使用了编码器来编码 PHP 源代码。
  • 一句话,没有。多年来,我已经看到了各种各样的方法,而且我从未见过一种无法被知道自己在做什么的人轻易绕过的方法。混淆/编码源代码并没有真正的帮助,它们都可以相当简单地反转。

标签: php networking gethostbyname


【解决方案1】:

【讨论】:

  • “建议不要在生产站点中使用它” - 断章取意。另外:回答不仅仅是粘贴链接。
  • @M.M.我已经提到了我认为有用的东西。而且,我的答案不仅仅是链接。如果我的答案有三个有用的链接怎么办。请注意,我提到的所有三个链接都来自官方 PHP 站点。此外,我已经提到了 2012 年的推荐和回答。
猜你喜欢
  • 1970-01-01
  • 2023-03-15
  • 2014-06-25
  • 2016-05-29
  • 1970-01-01
  • 2016-03-11
  • 2011-03-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多