Подтвердить что ты не робот

Убедитесь, что PHP скрипт работает только как задание cron?

Как я могу гарантировать, что пользователь не может запустить PHP script и что он выполняется только как часть задания cron?

4b9b3361

Ответ 1

Вы можете установить переменную среды в своем crontab. Строку типа IS_CRON=1 можно разместить в начале вашего crontab, а затем проверить свою php-программу на get_env("IS_CRON") == 1.

Конечно, вы также должны использовать права доступа к файлам, поскольку их не так легко обойти. Если это выполняется как часть корневого cron, chown root:root yourscript.php и chown 700 yourscript.php.


Как говорит ircmaxell, было бы лучше работать как пользователь, отличный от root, если вы не нуждаетесь в корневых разрешениях для того, что вы делаете. Я просто догадывался о вашей настройке.

Ответ 2

Как насчет того, что ваш PHP script проверяет, является ли $_SERVER['REMOTE_ADDR'] пустым, а если нет, то завершите script, не делая ничего более.

Ответ 3

Есть, вероятно, несколько способов сделать это. С головы до ног я бы сказал, что размещение его в каталоге, принадлежащем root, и только чтение от root может приблизиться к достижению эффекта, который вы ищете.

Существуют ли какие-либо процессы, которые вы ищете, чтобы ограничить его? Если это так, используя разрешения, сделать его нечитаемым для любого из этих процессов.

Ответ 4

Я бы предложил установить переменную среды внутри вашего crontab, а затем проверить ее на вашем PHP скрипт

Ответ 5

Создайте пользователя для заданий cron и установите разрешения для script, чтобы он мог запускаться только как этот пользователь. Конечно, вам тогда нужно поместить script в этого пользователя crontab, который вы можете сделать, войдя в систему как этот пользователь и запустив crontab. Просто не вводите пароль пользователя только любому другому пользователю...

Сначала я также думал об установке переменной среды, которая предотвратила бы запуск этого script из Интернета... Но просто не помещая script в пространство, где веб-сервер ищет страницы для веб-сайтов, сделать то же самое.

И ничто не останавливает случайного пользователя от первой установки переменной среды, а затем запускает script.