【问题标题】:Set php file permissions so only my server's curl can run设置 php 文件权限,这样只有我的服务器的 curl 可以运行
【发布时间】:2010-04-18 01:39:27
【问题描述】:

我有一个 PHP 脚本,我不希望任何人能够通过他们的浏览器运行它。

它发送电子邮件并由我的服务器的 cron 通过 curl 调用,但需要位于公共 www 目录中。我需要什么权限或所有者将文件设置为只允许我的服务器的 curl 执行(或者我的意思是读取)文件?

我在 centos 上。

谢谢!

【问题讨论】:

    标签: php permissions curl cron


    【解决方案1】:

    您可以通过在目录中放置具有适当访问限制的 .htaccess 文件来限制对文件的访问,或者通过在 php 文件的开头实施基本密码检查,如下所示:

    <?php
    $password = $_GET['password'];
    hash = '40bd001563085fc35165329ea1ff5c5ecbdbbeef'; //precalculated sha1 hash of your password
    if (sha1($password) != $hash) {
        die('Forget it!');
    }
    

    为了增加安全性,这可以进一步完善,但你明白了......

    【讨论】:

    • 所有很好的答案,但这一个提供了所需的安全性,同时仍然允许我从浏览器访问文件进行测试。谢谢!
    • 欢迎您。你帮我获得了 1024 点声望点 :) 谢谢。
    【解决方案2】:

    如果可以,我建议您采用不同的方式:通过 CLI 运行脚本(在 cron 作业中调用 php -f)并让 PHP 脚本检查其运行方式。您可以使用php_sapi_name() 了解是否从命令行界面调用脚本,并在从 Web 调用它时终止。据我所知,这将是最安全的解决方案。

    如果你真的需要通过curl获取它,使用Josh的解决方案或者定义一个需要添加到脚本中的密码作为get参数:

    curl domain.com/script.php?password=123456
    

    不是非常安全,因为密码会在 crontab 中可见,但应该提供适当的保护以防止来自外部的访问,特别是如果您将它与检查 $_SERVER["REMOTE_ADDR"] 并确保它是 127.0.0.1 结合使用。

    【讨论】:

      【解决方案3】:

      为什么不直接使用 php-cli 从命令行而不是通过 curl 来运行它?

      如果你真的需要托管它,你可以在你的 .htaccess 中做这样的事情

      <Directory /your/path/>
      Order allow,deny
      Allow from 192.168.1.0/24
      Allow from 127
      </Directory>
      

      【讨论】:

        【解决方案4】:

        正如所言,这是不可能的。据我所知,我认为您可以使用多种选项来解决您的问题:

        您可以 chown root 或其他用户,然后 chmod 700,然后使用所有者的 crontab 文件中的 PHP 命令行功能从 cronjob 调用脚本。

        如果您需要通过 curl 访问文件,那么您将访问 Web 服务器,并且 Web 服务器需要能够执行/读取脚本,这将允许任何人执行该脚本。

        另一种选择是使用基于规则的访问控制,如下所述:http://library.linode.com/web-servers/apache/access-control/rule-based-access 以确保只有来自您的服务器的连接才能访问相关文件,但这本身并不完全理想。

        当然还有其他解决方案,但我希望这会有所帮助。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-06-06
          • 1970-01-01
          • 2013-11-24
          • 2020-07-16
          • 1970-01-01
          • 2012-06-12
          • 2014-01-25
          • 2016-02-15
          相关资源
          最近更新 更多