我知道那里有类似的帖子,但请放心,这不是重复的帖子!
我在 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/