php - 如何只为 cron 任务保护 php 文件?

标签 php database automation cron

我知道那里有类似的帖子,但请放心,这不是重复的帖子!

我在 Godaddy 服务器上有一个网站。我无权访问服务器根目录的外部(一切都是公开的)。

我有一个文件 delete.php 需要在 CRON 上运行,并且只能由 CRON 运行。该文件不应由任何人出于任何原因手动执行。

鉴于上述情况,我正在尝试尽可能地保护我的文件,所以让我们将其作为一项安全性实验。

到目前为止,我的目标是使文件尽可能安全:

<?php
$isCLI = ( php_sapi_name() == 'cli' );

if (!$isCLI) {
    die("cannot run!");
} else {
    if(!isset($_SERVER['REQUEST_METHOD'])){
        // Do the task here
    }else{
        die("cannot run!");
    }
}
?>

那么,这在逻辑上安全吗?如何让它更安全? godaddy 只能让我设置一个日期/时间来运行一个文件,仅此而已。

最佳答案

正在检查 cli SAPI 就足够了;通过 apache(无论是 mod_php 还是 fastcgi 或 cgi)执行它的用户永远不会导致通过 CLI sapi 调用 PHP。你可以摆脱丑陋的else {}围绕你的真实代码;如果你exit;then block 的末尾不需要 else block 。

但是,根本不将这种脚本放在文档根目录中会干净得多。如果那不可能,也可以考虑使用 .htaccess :

Order deny,allow
Deny from all

如果文件位于不应完全锁定的文件夹中,请将这些行包装在 <Files whatever.php>...</Files>

关于php - 如何只为 cron 任务保护 php 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9898773/

相关文章:

PHP, XML 如何获取属性?

php - 捕获从 Postgresql 到 PHP 的错误

php - elasticsearch-php更新返回错误请求,其中curl不

mysql - 插入查询不适用于具有外键的行

powershell - 用于启动/停止虚拟机的 Azure Runbook 显示 "Completed"但没有任何反应

php - PSR-2 控制结构的左括号

java - 从 Java 应用程序创建到 2 个数据库的连接

php - 使用 CodeIgniter 的数据库查询将空值返回到数组中?

Jquery:如何自动将 window.location.hash 应用为与按钮 id 中相同的数字?

android - Appium AndroidDriver 的 DesiredCapabilities