【问题标题】:Is it possible to make PHP Script Domain dependent是否可以使 PHP 脚本域依赖
【发布时间】:2023-03-03 08:50:28
【问题描述】:

是否可以在不使用 Zend 保护或其他第三方工具的情况下使 PHP 脚本依赖于域,这样如果它试图在任何其他域上执行,它就会被破坏。

【问题讨论】:

  • 如果有人将您的脚本放到另一台服务器上,那么他们很可能知道如何删除脚本中防止在其他服务器上执行的任何部分。
  • @apokryfos 不重复,我不想使用 Zend Guard 或第三方编码。
  • 我怀疑这在没有任何第三方干预的情况下是可能的。您基本上是在尝试绕过普通的 PHP 解释器,转而使用能够解密然后执行您的代码的东西。
  • 我认为编译器之前需要一个处理程序。

标签: php security encryption


【解决方案1】:

您可以测试HTTP_HOST 以确定是否执行PHP,例如:

$allowed_hosts = array('foo.example.com', 'bar.example.com');
if (!isset($_SERVER['HTTP_HOST']) || !in_array($_SERVER['HTTP_HOST'], $allowed_hosts)) {
    header($_SERVER['SERVER_PROTOCOL'].' 400 Bad Request');
    exit;
}
else{ 
   // PHP here
}

在这种情况下,PHP 在服务器端执行,因此对运行代码的用户不可见。只有有权访问服务器上的 .php 文件的人才能读取它。

【讨论】:

    【解决方案2】:

    给你:

    if ($_SERVER['HTTP_HOST'] == 'www.domain.com') {
     ...
    }
    

    【讨论】:

    • 在这种情况下,如果有人会检查脚本并可以绕过条件。我必须确保没有人可以看到它是如何工作的。
    • PHP 在服务器端运行,需要有人访问服务器才能读取文件
    • @PhilipThomson 我认为他们想销售/分发用 PHP 编写的软件,而不是让人们能够阅读源代码。
    • @apokryfos 在这种情况下,有两个选择:最好将软件保持私有并在您自己的服务器上为用户设置实例。或者将其和依赖项的核心部分远离它已分发给的用户。请参阅 this 有关 DRM 的文章。
    猜你喜欢
    • 1970-01-01
    • 2017-10-26
    • 2017-08-11
    • 1970-01-01
    • 2022-12-11
    • 2020-06-06
    • 1970-01-01
    • 2015-08-20
    • 1970-01-01
    相关资源
    最近更新 更多