Как я могу гарантировать, что пользователь не может запустить PHP script и что он выполняется только как часть задания cron?
Убедитесь, что PHP скрипт работает только как задание cron?
Ответ 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.