我可以保护远程用户的CRON脚本吗?

Pet*_*art 3 php permissions cron file-permissions user-permissions

我目前正在开发一个涉及使用CRON工作的新项目.

CRON脚本基本上运行SQL查询,将数据生成到文件中,并通过FTP将该文件发送到另一个服务器.

该剧本在实时网站上(www.website.com/sendOrders.php)

我没有看到任何安全问题或威胁,我认为任何人都不太可能在服务器上找到PHP脚本.但是我不希望脚本被任何外人执行.

有没有办法可以保护这个脚本?

谢谢彼得

Don*_*Joe 8

这是我的解决方案:

检查cron.php是否发送了某些特定标头

cron.php

if (secure_cron_script() === false) {
    echo 'Unauthorized';
    return;
}
echo 'OK';
Run Code Online (Sandbox Code Playgroud)

函数.php

function secure_cron_script () {
    if (DEBUG)
        return true;

    $http_headers = getallheaders();
    if (empty($http_headers['X-My-Cron-token'])
    || $http_headers['X-My-Cron-token'] !== SECURE_CRON_TOKEN) {
        return false;
    }
    return true;
}
Run Code Online (Sandbox Code Playgroud)

如何使用curl调用cron:

curl --header "X-My-Cron-token: 321123321sd"  https://example.com/cron.php
Run Code Online (Sandbox Code Playgroud)

无IP限制。没有 GET/POST。如果是开发模式,则跳过限制。您可以将脚本放在任何您想要的地方。


chr*_*rki 7

您可以将"秘密文件"移动到子文件夹中,然后在其中创建一个.htaccess文件,阻止从每个人访问该文件,但运行Cronjob的服务器除外.

例:

DENY FROM ALL
ALLOW FROM 123.123.123.123
Run Code Online (Sandbox Code Playgroud)

如果你有shell访问权限,你也可以将脚本放在可访问文件夹之外,并通过命令行或cronjob直接运行,如下所示:php script.php.