Запланированное выполнение кода php - PullRequest
0 голосов
/ 18 мая 2011

Привет, ребята, насколько я понимаю, cron можно использовать для выполнения кода php, запустив интерпретатор php и передав ему путь к скрипту, который будет выполнен.

Код, который я хотел бы запланировать, находится в контроллере / модели codeigniter.Таким образом, в основном контроллер содержит 3 функции, которые выполняют некоторую статистику по БД.У каждой функции будет свое расписание.

Как защитить этот контроллер, чтобы код не выполнялся злонамеренно?передать кредиты контроллеру как часть работы cron?или я возьму этот код в отдельное приложение ci?

Буду признателен за любые мысли по этому поводу.

спасибо

Ответы [ 3 ]

1 голос
/ 18 мая 2011

Вы не должны создавать контроллер для выполнения сценария .Вам нужно просто создать обычный скрипт PHP и запустить его через командную строку / cron.

Скрипт не должен находиться в вашем общедоступном веб-каталоге, он должен быть где-то еще (в script папка, например), недоступна для общественности ( сценарий не должен быть веб-страницей ).

Потому что, если у вас есть сценарий в качестве контроллера, это означает, что вы запускаетескрипт через HTTP-сервер, который небезопасен , и в вашей задаче cron вам придется использовать что-то вроде wget "localhost/mycontroller/myaction" (менее чистый).

0 голосов
/ 23 октября 2011

Я не думаю, что идея строки запроса на самом деле настолько плоха, особенно если этот URL-адрес передается по вашей собственной сети через брандмауэр, тогда нет реальной причины для беспокойства.

Еще одна функция безопасности, которую вы могли бы реализоватьудостоверяется, что IP-адрес запроса «клиента» равен IP-адресу сервера, поэтому сценарий может выполняться только в том случае, если он вызывается с сервера, выполняющего действие контроллера.

0 голосов
/ 18 мая 2011

Вы всегда можете переместить файл за пределы веб-каталога, поэтому вы можете получить к нему доступ только со стороны сервера.Другой способ - изменить права доступа к файлу, чтобы ваш сервер не мог прочитать файл и выполнить cron под root (не рекомендуется).

Что касается credis, вы можете запустить скрипт только в том случае, если вы передадитеправильная переменная get.Например, скрипт запускается только при вызове:

http://localhost/script.php?chjfbbhjscu4iu793673vhjdvhjdbjvbdh=bugy34gruhw3d78gyfhjbryufgbcgherbciube
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...