Ограничение доступа к cron.php

Прислано: axel

пн, 07/02/2005 - 06:00

Другие статьи по теме:

Скрипт cron.php регулярно исполняющий сервисные функции сайта по расписанию по умолчанию доступен извне. В принципе его вызов не несёт к.л. неприятных последствий для сайта, если cron.php уже исполняется, то его повторное исполнение в это время будет блокировано. Поэтому организовать таким способом DOS атаку на сайт не удастся. Тем не менее частый вызов скрипта даже с интервалом в секунды или десятки секунд врядли имеет смысл поэтому можно на всякий случай (админская паранойа) ограничить доступ к cron.php только обращением из скрипта в crontab (т.е. с текущего сервера).

Для этого можно использовать директивы allow from в Apache в файле .htaccess:

<Files cron.php>
  order deny,allow
  allow from localhost
  allow from youhostname
  allow 123.45.67.89
</Files>

- идея должна быть ясна. Мы запрещаем доступ отовсюду кроме хостов (можно по именам, можно по ip) указанных директивами allow.

Комментарии


Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Применить"
Опубликовано Basielienis в ср, 15/06/2005 - 08:34.

Респект! Давно удивляюсь, почему этот вопрос нигде не поднимается.


Опубликовано arsart в чт, 16/06/2005 - 11:00.

ждут пока рак свистнет, как и в случае с выборкой по таксономии.


Опубликовано G1eb в пт, 01/09/2006 - 09:49.

Очень познавательно!
Но небольшая опечатка, в .htaccess следует писать так:

<Files cron.php>
  Order Allow,Deny
  Allow from localhost
</Files>
(сначало Allow, потом Deny)



Кроме того на некоторых хостингах WEB-сервер и cron стоят на разных серверах, поэтому для WEB-сервера следует указывать не localhost, а ip адрес сервера, на котором стоит cron.
Например для моего хостинга masterhost.ru будет верно работать:

<Files cron.php>
  Order Allow,Deny
  Allow from 83.222.23.200
</Files>



Для того чтобы выяснить IP адрес сервера на котором стоит cron, надо зайти на сервер по SSH и ввести команду:

host `hostname`
(внимание! здесь стоят именно обратные кавычки и команда пишется дословно)


Опубликовано Natalie в пн, 18/09/2006 - 15:09.

Еще можно просто переименовать файл (и не забыть снова это сделать при апгрейде).
---
---
All content management systems suck, Drupal just happens to suck less. -- Boris Mann at DrupalCON Amsterdam, August 2005.


Опубликовано Ainur в пн, 18/09/2006 - 16:52.

Я вынес его в папку недоступную через web, и всего делов.


Опубликовано B.X в пн, 18/09/2006 - 21:44.

.htaccess лучше тем, что роботы тоже не получают доступа к этому файлу...


Опубликовано orbisnull в пн, 18/02/2008 - 15:38.

Спасибо! А можно ли запускать cron.php из командной строки, чтоб апач вообще не отвлекать?


Опубликовано fasdalf@fasdalf.ru в пн, 18/02/2008 - 16:58.

Можно. Но он отработает только по сайту из sites/default/settings.php
Если у Вас не мультисайт - вполне можно. Только вот путь у интерпитатроу не всегда "php" - обычно на хостингах писают в фак.


Новое на сайте

Ссылки партнёров