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

Swe*_*ter 2 php database cron automation

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

我在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!");
    }
}
?>
Run Code Online (Sandbox Code Playgroud)

那么,这在逻辑上是安全的吗?怎样才能更安全?godaddy只允许我设置运行文件的日期/时间,仅此而已.

Thi*_*ter 5

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

但是,根本不将这种脚本放在文档根目录中会更加清晰.如果那是不可能的,也可以考虑使用.htaccess:

Order deny,allow
Deny from all
Run Code Online (Sandbox Code Playgroud)

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