Наконец-то снято самое существенное ограничение, которое существовало вместе с плагином RadicalForm уже достаточно давно – все загружаемые с помощью формы обратной связи файлы можно было отправить только с помощью E-mail.
Естественно это накладывало ограничения на количество и размер загружаемых файлов с помощью формы обратной связи, а также ограничивало различные сценарии использования плагина.
Частично это можно было решить с помощью плагинов, система которых была введена совсем недавно, но для широкого круга пользователей такое решение было слишком сложным.
Это ограничение было введено с целью максимально обезопасить использование плагина для всех.
И только теперь, когда решены вопросы безопасности при загрузке и скачивании файлов, мы можем представить это решение всем пользователям нашего плагина.
Как работает функция скачивания файлов?
При установке плагина формируется новая папка со случайно сгенерированным именем, состоящем из цифр и символов, длиной 23 символа с помощью криптографически устойчивых функций системы. Таким образом создается адрес доступа к папке достаточной длины, который практически невозможно угадать с помощью банального брутфорса (при нынешней ситуации на это уйдут многие десятки лет).
Имя этой папки известно только владельцу сайта и больше нигде не фигурирует.
В любой момент это имя можно сменить самостоятельно указав нужный адрес (например, банально вынеся ее за пределы папки, в которой находится Joomla, и таким образом просто исключив даже теоретическую возможность подбора адреса).
Так же можно перегенерировать адрес, просто стерев его полностью и нажав кнопку "Сохранить". В этом случае адрес будет сгенерирован заново.
Если думаете, что вам не хватает этой защиты – можете добавить еще символов от себя.
Контроль файлов
Однако даже получив доступ к этой папке злоумышленник ничего не добьется – при загрузке все файлы проходят контроль Joomla и проверяются на предмет внедрения потенциально исполняемых файлов.
Таким образом не получится загрузить php файл и затем исполнить его (частый сценарий для плагинов WordPress).
Впрочем, такая проверка работала в плагине и раньше.
Формирование адреса скачивания файлов
Еще один уровень безопасности – путь для скачивания для каждого сайта формируется уникальным образом.
Обратите внимание на этот параметр – первые три буквы одинаковы для всех сайтов – rfA, а вот следующие три символа также формируются случайным образом, чтобы исключить тех, кто загружает файлы теоретическую возможность выяснить адрес загруженного файла.
Никакой угрозы безопасности это не несет, но это уже дело владельца – делать ли доступным эти адреса. С нашей стороны мы предприняли максимально возможные меры предосторожности (наверное даже через чур параноидальные, но зато мы можем быть уверены в нашем решении).
Вы также можете самостоятельно поменять этот адрес.
По итогу путь к каждому файлу формируется на основе адреса, указанного в администраторской части сайта, затем идет уникальный идентификатор, создаваемый для каждой формы отдельно при каждой загрузке страницы, потом идет имя выбранное вами для поля загрузки, и наконец, имя файла, преобразованное в латинские символы.
Например, адрес скачивания файла, который будет фигурировать в ваших письмах будет выглядеть примерно так:
https://site.ru/rfAcd9/1597230260363/fileupload/2019-09-0216-05-00.jpg
https://site.ru/rfAcd9/1597230260363/fileupload/7879_83318383.jpg
Скачивание файлов
Все файлы при запросе по сформированному адресу не передаются непосредственно через сервер, а проходят предварительную обработку в плагине и исключают таким образом любые злонамеренные действия с файлом.
Единственное, что с ним можно сделать – скачать. И то, если это позволит владелец сайта, раскрыв адрес скачивания.
Таким образом создана надежная прослойка между местоположением файлов на сервере и их адресом скачивания.
Если вынести папку с файлами за пределы папки Joomla, то это вообще исключает теоретическую возможность каким либо образом добраться до них извне.
Адрес скачивания вы также можете поменять в любой момент.
Срок хранения файлов
Так как все файлы загружаются на ваш сервер и хранятся там, то рано или поздно должна возникнуть ситуация, когда хранилище, отведенное для них, кончится.
Поэтому предусмотрен срок, по истечении которого, старые файлы начинают уничтожаться.
По умолчанию этот срок установлен в 30 суток (один месяц), но вы можете установить свой.
Размер хранилища
Так же вы можете изменить размер хранилища. По умолчанию для него отводится 1000 мегабайт (1 Гигабайт).
Ограничение на размер хранилища введено для того, чтобы никто не сумел нарушить работу сайта, загрузив количество файлов, которое превышает отведенный для вашего хостинга размер.
При достижении предела новые файлы загружаться не будут, а вам придется самостоятельно удалить старые файлы или другим образом очистить папку.
Вкладывать файлы в письма
Для новых инсталляций плагина эта функция отключена по умолчанию, так как прикладывать ссылки на файлы – это самый быстрый способ отправки форм на сайте и не ограниченный по объему передаваемых файлов.
Однако для старых инсталяций этот параметр остается включенным, чтобы не менять привычное поведение плагина.
Файлы так и будут вкладываться в письма, как это происходило раньше.
Разделитель вложенных файлов
Ссылки на вложенные файлы отделяются друг от друга с помощью перевода строки. Если вы хотите добиться более компактного размещения – можете поменять это на запятую или пробел. В таком случае ссылки будут идти в одну строку одна за другой.
Сам плагин был существенно переработан. Пользуясь случаем часть кода была отрефакторена и разбита на смысловые блоки.
Обработка взаимодействия с телеграм ботом существенно улучшена – теперь в администраторской части сайта при добавлении бота телеграм показываются ошибки, которые могут возникать в процессе этого. Сам процесс стал удобнее и понятнее.
Скрипт взаимодействия с телеграм в администраторской части избавлен от зависимости от телеграм – готовимся к чистому коду и переходу на Joomla 4.
Большая работа была проведена в плане надежности работы плагина и его защиты от возможных атак извне.
Плагин продолжает развиваться и улучшать свой функционал. Аналогов по этому функционалу нет и не будет. Продолжайте следить за новостями – скоро будут полезные уроки и способы практического применения плагина на ваших сайтах.
Сейчас мы не будем анонсировать два существенных изменения, которые еще предстоит внедрить в плагин, но новости вскоре последуют.
Если вы заметили нестандартное поведение плагина или если у вас есть идеи по развитию плагина, добро пожаловать в наш телеграм канал для профессионалов в разработке под Joomla – https://t.me/projoomla