【问题标题】:PHP & cron: security issuesPHP & cron:安全问题
【发布时间】:2010-12-08 12:46:34
【问题描述】:

什么是确保只有 CRON 执行 PHP 脚本,而不是其他偶然发现你的 php 脚本的人的最佳方法..

我在想一个密码变量....但这是一个合法的 CRON 命令吗? :

/usr/local/bin/php -f /home/mysite/public_html/dir/script?password=12345

这样人们在通过 HTTP 访问 PHP 脚本时无法执行相同的命令(除非他们知道密码)

谢谢。

【问题讨论】:

    标签: php security cron


    【解决方案1】:

    假设如果您不希望任何人通过 http 运行文件,然后像您一样使用 php 命令设置 cron,并将 htacess 添加到 cron 文件夹以阻止对文件夹的 http 请求 通过添加

    全部拒绝 htacess

    假设如果您希望 cron 文件夹受密码保护,那么可以按照 URl 中的说明进行操作

    http://www.elated.com/articles/password-protecting-your-pages-with-htaccess/

    【讨论】:

      【解决方案2】:

      您应该将此文件保存在 public_html 之外

      /usr/local/bin/php -f /home/mysite/script 
      // is secure from public access
      

      【讨论】:

      • 虽然我同意这个选项确实有效,但许多人可能唯一担心的是他们是否正在运行某种框架。例如,我运行 CI,一切都通过 index.php 运行,这些 cron 脚本需要在 public_html 中。 CI 提供了一个名为 is_cli_request() 的函数,可用于确保请求来自命令行,而不是 apache。
      【解决方案3】:

      如果您只需要从 cron 执行脚本,请不要将脚本放在您的 public_html(或文档根目录下的任何位置)目录中。真的就是这么简单。

      【讨论】:

        【解决方案4】:

        您可以通过命令行将参数发送到 PHP 文件。只是不像你想的那样。

        http://www.php.net/manual/en/reserved.variables.argc.php

        但是,您也希望将其保留在公共 html 文件夹之外,就像其他人所说的那样。所以你不能向他们冲浪。从命令行运行的 PHP 不需要位于任何类型的网络服务器监视文件夹中。

        【讨论】:

          【解决方案5】:

          或者您可以通过 IP 阻止执行 做这样的事情:

          ($_SERVER['REMOTE_ADDR'] == "127.0.0.1") or die('NO ACCESS');

          【讨论】:

          • $_SERVER 不可用于 cron
          • 其实我真的这么认为。我个人使用: $isCLI = ( $_SERVER['REMOTE_ADDR'] == $_SERVER['SERVER_ADDR'] ); if( !$isCLI ) { die("no no guppy guppy"); }
          【解决方案6】:

          有密码也可以,但是:

          • 在 crontab 中写入密码是个坏主意,因为其他本地用户可能能够读取它
          • 您的语法不起作用(它会尝试运行脚本“script?password=12345”。无法在 shell 脚本中命名参数,因此您必须运行“script.php 12345”

          一个有效的解决方案是检查您的 PHP 脚本,当前环境看起来像 cron 在启动命令时提供的环境。特定于 Cron 的环境变量可能会帮助您确保脚本是由 cron 而不是用户运行的。

          【讨论】:

            猜你喜欢
            • 2016-04-30
            • 2011-11-08
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-04-06
            • 1970-01-01
            • 1970-01-01
            • 2011-03-22
            相关资源
            最近更新 更多