Как защитить сайт на Drupal 7 и упростить разработку

Базовая сборка Drupal 7 предоставляет все необходимое для начала разработки сайта. Однако, если сайт готовится к публикации, а тем более, если сайт уже доступен в онлайне, крайне важно, чтобы с ним было удобно работать. Ниже представлен список модулей, которые, с моей точки зрения, минимально необходимы для комфортной работы с проектом. Знаком "плюс" я буду помечать включаемые модули, знаком "минус" — отключаемые. В скобках указаны системные названия и ссылки на Drupal.org, а затем следует краткое описание соответствующих модулей.

В случае, если у вас есть выделенный сервер, начать следует с установки Drush.

https://www.drupal.org/project/drush
+ Drupal shell (drush)
Drush — мощная утилита значительно уменьшающая количество рутинных действий при работе с CMS Drupal.

Настраиваем ядро Drupal 7

Само ядро Drupal круглосуточно доступно:

https://www.drupal.org/project/drupal
+ Drupal (drupal)
Drupal — система управления содержимым сайта (CMS), используемая также как каркас для веб-приложений (CMF).

Первое, что я обычно делаю, это отключаю модуль Overlay. По-моему, он по своей природе тормозной. Это личное предпочтение, не настаиваю. Просто мне не нравится.

- Overlay (overlay)
Вывод интерфейса в накладываемом поверх страницы слое.

Второе, включаю то, что может быть полезным в базовой комплектации:

+ Locale (locale)
Добавляет поддержу языков и позволяет переводить пользовательский интерфейс на языки, отличные от английского.
+ Statistics (statistics)
Ведет журнал статистики доступа к вашему сайту.
+ Syslog (syslog)
Регистрирует и записывает события в системный журнал.

Внедрение внеядерных модулей

Теперь можно включить нужный (-ые) язык (-и) и приступить к настройке локализации. Но, так как процесс этот зависит от множества факторов и повторяется периодически (с каждым новым модулем), сразу же стоит его автоматизировать:

https://www.drupal.org/project/l10n_update
+ Localization update (l10n_update)
Предоставляет возможность автоматической загрузки и обновления переводов.

Автоматический перевод будет работать каждый раз, когда нужно что-то (до-)перевести. Очень удобно.

Далее нужно облегчить жизнь разработчику сайта. Для этого устанавливаем пару полезных административных модулей:

https://www.drupal.org/project/admin_menu
+ Administration menu (admin_menu)
Добавляет выпадающее меню для большинства административных и других общих задач (для пользователей с соответствующими правами).

https://www.drupal.org/project/module_filter
+ Module filter (module_filter)
Фильтрует список модулей.

Теперь все функции будут под рукой (не нужно кликать лишний раз по административным ссылкам) и модули будут рассортированы по тематическим категориям. Это удобнее чем изначальный алфавитный список модулей.

После этого шага я, обычно, отключаю стандартную панель задач Drupal за ненадобностью:

- Dashboard (dashboard)
Предоставляет в административном интерфейсе панель управления для организации административных задач и отслеживания информации на вашем сайте.

Полезные библиотеки и представления

Ниже перечисленные модули используются почти во всех проектах различной степени сложности. Для начала элементарные токены — они в системе используются почти повсеместно.

https://www.drupal.org/project/token
+ Token (token)
Обеспечивает пользовательский интерфейс для Token API и некоторые пропущенные токены ядра.

Далее подключаем обширный инструментарий для работы со страницами, панелями, объектами.

https://www.drupal.org/project/ctools
+ Chaos tools (ctools)
Библиотека полезных инструментов от Merlin of Chaos.

Автоматизируем поддержку последних версий jQuery:

https://www.drupal.org/project/jquery_update
jQuery Update (jquery_update)
Обновление jQuery и jQuery UI до более поздних версий.

Помимо jQuery наверняка понадобятся различные иные внешние библиотеки:

https://www.drupal.org/project/libraries
+ Libraries (libraries)
Разрешает зависимое от версии и общедоступное использование внешних библиотек.

Крайне маловероятно, что сайт может обойтись без представления данных в том или ином виде. По этой причине в Drupal 8 представления встроены сразу в ядро. Устанавливаем представления и включаем интерфейс для управления ими:

https://www.drupal.org/project/views
+ Views (views)
Позволяет создавать списки и запросы из базы данных сайта.
+ Views UI (views_ui)
Административный интерфейс для представлений. Без данного модуля не будет возможности создавать или редактировать представления.

Автоматизируем создание URL'ов:

https://www.drupal.org/project/pathauto
Pathauto (pathauto)
Обеспечивает для модулей механизм автоматической генерации синонимов для материала, которым они управляют.

Выстраиваем оборону

Резервное копирование — первый и наиважнейший шаг в защите данных.

https://www.drupal.org/project/backup_migrate
+ Backup and Migrate (backup_migrate)
Резервное копирование базы данных и файлов Drupal или перенос их в другое место.

Далее, так как на любом сайте присутствует как минимум одна форма (например, контактная форма обратной связи), то ее нужно защитить от спама.

https://www.drupal.org/project/captcha
+ CAPTCHA (captcha)
Модуль CAPTCHA для использования в различных формах.

Однако стандартные математические тесты на сложение и ввод букв и цифр с картинок уже достаточно хорошо сдаются роботами. Поэтому защиту необходимо усилить, я усиливаю ее наработками Google, создавшей тест "Я не робот", также известный как reCAPTCHA. Для полноценной настройки модуля нужен Gmail аккаунт.

https://www.drupal.org/project/recaptcha
+ reCAPTCHA (recaptcha)
Protect your website from spam and abuse while letting real people pass through with ease.

Если на сайте не предполагается регистрации пользователей, стоит ее сразу отключить, указав, что новые учетные записи может создавать только администратор.

/admin/config/people/accounts

Почта

Когда пользователи заполняют формы, в большинстве случаев данные с сайта отправляются в виде электронных писем. Однако, порой есть необходимость отправлять письма через внешний SMTP сервер (например, если хостер ограничил количество отправляемых писем в час):

https://www.drupal.org/project/smtp
+ SMTP Authentication Support (smtp)
Allow for site emails to be sent through an SMTP server of your choice.

Эти письма, также, можно сохранить в базе данных (рекомендуется в целях отладки):

https://www.drupal.org/project/maillog
+ Maillog / Mail Developer (maillog)
Utility to log all Mails for debugging purposes. It's possible to suppress mail delivery for e.g. dev or staging systems.

Внешняя статистика

Для сбора статистики, помимо стандартного модуля:

+ Statistics (statistics)
Ведет журнал статистики доступа к вашему сайту.

Есть еще:

https://www.drupal.org/project/googleanalytics
+ Google Analytics (googleanalytics)
Allows your site to be tracked by Google Analytics by adding a Javascript tracking code to every page.

https://www.drupal.org/project/yandex_metrics
+ Yandex.Metrics Counter (yandex_metrics)
Позволяет устанавливать счётчик Яндекс.Метрики на страницы сайта.

Напоследок включаем ускорение (включаем сжатие, объединение и кеширование всего возможного):

/admin/config/development/performance

Установив все перечисленные модули можно быть уверенным, что дальнейшая разработка будет вестись на функционально богатой, защищенной и удобной технологической основе.