http://drupal.ru/cron.php
хтаксесс поставьте-то?
после небольших экспериментов, стало понятно, что не на всех друпалсайтах выставлен запрет, и крон можно запускать ручками - то есть можно положить сайт?
http://drupal.ru/cron.php
хтаксесс поставьте-то?
после небольших экспериментов, стало понятно, что не на всех друпалсайтах выставлен запрет, и крон можно запускать ручками - то есть можно положить сайт?
Комментарии
Это как можно положить? Поподробнее
На это можно "положить"
На это можно "положить"
подробнее?
повесь пару задач с большими обьемами данных в крон, и радуйся, как кто-то ее N раз запустит. и совсем это не создаст нагрузки на сервак.
я не прав?
Да, вы не правы.
Вызов cron.php может сдалать только юзер с номером 1 (то есть суперпользователь Друпал), который создаётся первым при установке.
Это, вроде, относится только к update.php. Да и то это поведение можно изменить через settings.php
Ограничение доступа к cron.php "прямо из дистрибутива" несколько неправильно, ибо, например, лишает возможности использовать внешние cron-планировщики. Так что любое решение не будет лучше правильной настройки .htaccess
А как его настроить-то? Озвучьте, пожалуйста, для неопытных!
Можно так: http://htaccess.net.ru/doc/htaccess/order.php
Топикстартер в чем-то прав, как полагаю. Тоже не раз задумывался о безопасности запуска cron.php. Ведь для корректной работы права на исполнение и просмтр файла должны быть "внешними".
А про .htaccess это делается так:
заменяем в стандартном .htaccess запись
Order allow,deny
</FilesMatch>
на
Order allow,deny
</FilesMatch>
т.е. добавив cron\.php в запрещенные к просмотру файлы
Если же у вас нет ресурсоемких задач перед кроном, то атака именно на cron.php, о которой подразумевается, будет не более опасной чем на сайт в целом.
Может кто из спецов по безопасности здесь есть. Подскажите как обстоит дело на самом деле и что лучше предпринять для защиты?
Как же вы будете при такой записи запускать cron?
Ага, поторопился :).
Надо добавить разрешение для определенного источника. Об этом кратко написано в ссылке данной VladSavitsky, постом выше.
Но на практике указание локального адреса не всегда сработает, т.к. запуск крона производится в нашем случае из "внешнего источника". Другими словами решение может быть такое такое. Стандартную запись не меняем! А просто добавляем в .htaccess:
Order allow,deny
allow from ip-адрес
</FilesMatch>
Вероятней всего это будет ip-адрес вашего сайта. Смотрите по логам сервера откуда идет обращение к файлу cron.php через крон.
PanDa777, вы правы, я перепутал.
update.php может запустить только юзер с ID#1.
Нашёл у себя статью, о том как закрыть доступ к cron.php извне: Ограничение доступа к файлу cron.php.
Справка. Со страницы статуса в D7:
You can run cron manually. To run cron from outside the site, go to http://example.com/cron.php?cron_key=3c25a6fcad9d2e4c2a82bcmb466872ed
Я наверное чего-то не понимаю. Почему все так боятся запуска крона? В код common.inc кто-нибудь смотрел?
function drupal_cron_run(), - логика явная: больше чем раз в 1 час его запустить не получится.
<?php
if (time() - $semaphore > 3600) {
// Either cron has been running for more than an hour or the semaphore
// was not reset due to a database error.
watchdog('cron', t('Cron has been running for more than an hour and is most likely stuck.'), WATCHDOG_ERROR);
// Release cron semaphore
variable_del('cron_semaphore');
}
else {
// Cron is still running normally.
watchdog('cron', t('Attempting to re-run cron while it is already running.'), WATCHDOG_WARNING);
}
?>
Логика такая - больше чем раз в час его запустить не получится. Если он перед этим не завершил работу. В конце работы cron переменная 'cron_semaphore' удаляется. То есть, $semaphore == 0.
Помогите малоимущему, где выставить этот "semaphore", нужно чтобы крон раз в час запускался?