Вопрос или проблема
Я заинтересован в создании веб-сайта на WordPress, которому необходимо обновлять определенные пользовательские таблицы базы данных после получения данных из RESTful веб-сервисов, скажем, раз в день.
Я могу достичь этого, используя скрипт для запроса к REST API, обработки данных и их сохранения в необходимых таблицах.
Однако я не уверен, куда поместить этот файл скрипта, чтобы cron мог вызывать его без каких-либо проблем (в плане безопасности).
- Могу ли я разместить эти файлы скриптов на уровне корня каталога WordPress (например,
/script1.php
,script2.php
и т.д.)? - Или мне создать плагин из скрипта, сможет ли cron получить доступ к этому файлу, находящемуся в каталоге плагинов?
ОБНОВЛЕНИЕ
- Будет использоваться несколько скриптов cron, поэтому я хочу создать плагины из каждого скрипта. Сможет ли cron получить доступ к файлам в каталоге плагинов?
Кто-нибудь может помочь?
Предполагая, что вы выполняете задания cron под своей учетной записью, она будет иметь доступ к любой папке, к которой ваша учетная запись имеет доступ для чтения. Если вам не нужно, чтобы они были общедоступными, и у вас есть доступ к папке за пределами вашей публичной веб-корневой директории, то в целях безопасности вы должны разместить их вне веб-корня.
Однако, если вы используете общий хостинг, это может быть невозможно из-за ограничений open_basedir
. В этом случае вы можете создать подкаталог в вашем основном каталоге WordPress или в папке ваших плагинов. Вы можете добавить файл htaccess, чтобы заблокировать доступ снаружи.
Ответ или решение
Теория:
Когда вы запускаете cron-задачи для обновления вашей базы данных в WordPress, важно разместить файлы с скриптами в безопасном месте, чтобы они были доступны для выполнения, но при этом не представляли угрозу безопасности. Существует несколько общих стратегий для обеспечения безопасности файлов скриптов cron. Во-первых, если возможно, разместите их за пределами корневого каталога веб-сервера, чтобы предотвратить публичный доступ через интернет. Во-вторых, если у вас нет доступа к директориям вне веб-рута (что часто происходит на совместных хостингах из-за ограничений open_basedir
), создайте подкаталог внутри основной директории WordPress или в каталоге плагинов, и ограничьте доступ снаружи с помощью дополнительных настроек безопасности, например, используя файл .htaccess
.
Пример:
При использовании совместного хостинга, где директории вне публичного корня недоступны, вы можете создать подкаталог, например, /private-scripts
, и поместить свои скрипты туда. В этом каталоге создайте файл .htaccess
с содержимым, предотвращающим доступ из интернета:
<Files *.php>
Deny from all
</Files>
При этом, запланированные задачи cron будут иметь доступ к этим файлам для их выполнения, в то время как попытки доступа через веб-интерфейс будут заблокированы.
Применение:
Прежде всего, определите, есть ли у вашего хостинга возможность разместить файлы за пределами веб-доступных папок. Если эта возможность недоступна, выберите один из возможных безопасных путей внутри вашей установки WordPress. Создайте подкаталог, как было упомянуто ранее, и скопируйте туда все необходимые скрипты. Затем, создайте .htaccess
файл внутри этого подкаталога, чтобы обезопасить его содержимое от несанкционированного доступа через веб-интерфейс.
Кроме того, рекомендуется тщательно настроить разрешения файлов, чтобы минимизировать вероятность доступа к этим скриптам со стороны неавторизованных пользователей или ботов. Убедитесь, что только ваш пользователь и процесс серверного cron имеют нужные доступы для чтения и исполнения этих файлов.
Таким образом, без необходимости использования плагинов, вы можете эффективно шедулировать и выполнять свои задачи cron, сохраняя высокий уровень безопасности вашего веб-приложения.