Защита Joomla. Часть 1. Основные виды атак. Joomla защита от роботов
Еще один способ защиты веб-форм от роботов / Хабр
Предисловие
Выношу на суд читателей хабры свой способ защиты форм от спам-ботов. Способ базируется на том, что большинство ботов не умеют читать таблицы стилей и выполнять коды javascript. Зато около 90% всех браузеров поддерживают эти технологии. Остальные 10% — это старые браузеры и браузеры с отключенным javascript. Если вдуматься, то навряд ли пользователи этих 10% имеют своей целью пользоваться формами обратной связи, регистрации на форумах, гостевых и пр. Сейчас вкратце рассмотрю способы борьбы с таким спамом на сегодняшний день.Существующие способы борьбы и их минусы
Способы:
- Использование CAPTCHA
- Комбинирование перечисленных способов
Минусы:
К минусам можем отнести раздражение пользователя, которого заставляют решать головоломки, угадывать числа, буквы. Дальше, большинство сегодняшних графических капчей являются так называемыми «слабыми капчами» и взламываются с помощью нехитрых серверных скриптов OCR. Здесь также стоит упомянуть «метод леммингов», где в процессе распознавания капчи принимают участие множество настоящих людей: спамеры переразмещают вопрос/картинку со взламываемого сайта на специальных сайтах с высокой посещаемостью, где, чтобы получить доступ к информации человек разгадывает таку капчу и передает результат спамерам. Еще метод поинтересней — прямой наем людей для отгадывания.
Суть моего способа
На странице создаем фиктивную форму и прячем ее поля от глаз пользователя, используя элемент таблицы стилей display:none. Далее, запустив на странице определенную javascript-функцию где-то за пределами фиктивной формы, выводим вместо нее настоящую с действительными названиями полей. При отправке роботом фиктивной формы, интерпретатор получает массив с неверными названиями и, например, выводит сообщение об ошибке. В случае же с реальным пользователем, форма обрабатывается нормально.
Преимущества:
- 95% гарантия отсечения спам-бота
- отсутствие нужды для человека разгадывать captcha
- простота реализации для разработчика
- нагрузка на спамерский сервер из-за потребности выполнять javascript и css
Минусы:
- Рано или поздно взломают
Реализация
Основная часть работы выполняется на стороне клиента с помощью CSS и Javascript. С помощью CSS, который желательно подключать к странице из отдельного файла, прячем форму-ловушку от глаз пользователя:#ourGreatForm {display:none;}
Дальше пишем простой javascript (кстати, тоже можно вынести в отдельный файл), со следующим содержанием:
function GenerateSomethingGreatForRealPeople() { // Объявляем о нашей переменной var ourfields = '<input type="text" name="sndr_name"><br>'+ '<input type="text" name="sndr_email"><br>'+ '<textarea name="sndr_content"></textarea><br>'+ '<input type="submit" name="sndr_pressed_button" value="Отправить письмо">'; // Заменяем подставные поля на тех машинах, где выполняется Javascript document.getElementById("ourGreatForm").innerHTML=ourfields; // Включаем отображение реальных полей document.getElementById("ourGreatForm").style.display="block"; }После формы, где-то в конце документа запускаем нашу javascript-функцию, если перед нами настоящий браузер:
GenerateSomethingGreatForRealPeople() В результате выполнения этой функции фиктивное содержимое формы меняется на настоящее и происходит включение отображения формы пользователю.Пример
Страница в действииВыводы
Способ зарекомендовал себя, как отличное оружие против спама, сведя его практически на нет на тех сайтах, где было осуществлено его внедрение. Целевая аудитория пользователей способа — сайты с небольшим траффиком. Такая защита действенна против ботов, размещенных в основном на хостинг-серверах общего пользования, не умеющих работать с javascript и css. Через некоторое время, я уверен, спамеры напишут программулину для обхода и этого способа, но только в том случае, если использование этого способа станет массовым. Для усиления защиты от спам-ботов можно считать комбинирование моего метода с captcha-ей — человеческим вопросом.
Ссылки по теме:
- Wikipedia: Глобальная рыночная доля использования браузеров. Подсчет не по-русски.
- Spylog: Глобальная рыночная доля использования браузеров. Подсчет по-русски.
- Один из алгоритмов взлома графической captcha
- Wikipedia: Все о captcha
Любые комментарии, дополнения, замечания приветствуются.
habr.com
защита от Спама без CAPTCHA
Важно! Скачивая данный скрипт Вы соглашаетесь с тем, что Разработчик не несет ответственности за возможные нарушения в работе сайта и упущенную выгоду. Техническая поддержка осуществляется на платной основе, заявку можно оставить в специальной теме на нашем Форуме.Описание
Защита сайта на CMS Joomla и интернет магазина на базе компонента JoomShopping от автоматических регистраций (спам-роботов) без использования CAPTCHA.
Предотвращение несанкционарованного доступа на этапах Регистрации и Авторизации (option=com_jshopping) с выводом сообщения о причине блокировки.
Проверьте наличие в шаблоне инструкции jdoc:include type="message"Сбор информации о попытках Логина/Регистрации и отправка отчетов на email Администратора. Опция запрета блокировки отдельных групп (клиентов магазина).
Важно Запрет блокировки работает по группам Joomla! Исключите группу "Супер-пользователи"!
Установка
Для корректной работы плагина необходимо создать соответствующие пункты меню в CMS Joomla: JoomShopping - Клиенты - Регистрация/Вход.
Настоятельно рекомендуется настроить дополнительные редиректы в .htaccess со страниц Joomla и прочих компонентов, таких как K2/Kunena (если используются).
Установка плагина производится стандартно, из Менеджера Расширений CMS Joomla. Управление и настройка осуществляется через Менеджер Плагинов.
Введите в "Поиске по названию..."Spam LockerВажно Не забывайте закрывать от индексации "служебные" ссылки в файле robots.txt
Технология
Плагин "JoomShopping.pro Spam Locker" в момент Регистрации/Авторизации выполняет проверку клиента в три этапа:
Шаг 1 Проверка браузера на поддержку JavaScript
Шаг 2 Проверка возможности записи/чтения Cookie
Шаг 3 Проверка email по Базе StopForumSpam.com
Системные требования: Joomla 3.3.6 (2.5.28) + JoomShopping 4.9.1 (3.20.1) и выше.
Важно Всегда делайте резервную копию сайта перед установкой дополнений!
nospam.joomshopping.pro
Защита Joomla. Часть 1. Основные виды атак.
В этой статье я расскажу про основные виды атак, которые могут быть совершены на Joomla-сайт.
В последнее время я стал замечать, что в комментариях и на форуме появляется много вопросов, связанных с взломом сайтов. Действительно, каждый владелец сайта, в независимости от того, на чем он (сайт) написан, должен знать базовые принципы защиты от хакерских атак. Это позволит сберечь время, нервы, а иногда и деньги.
Основная проблема всех статей, посвященных безопасности сайтов, заключается в их сложности. Многие уязвимости носят сугубо технический характер и их описание, для простого человека, превращается в набор непонятных слов. Эта статья начинает серию по защите Joomla от взлома. Все вопросы безопасности я постараюсь описывать максимально простым и доступным языком. Чтение данной серии будет полезно всем владельцам Joomla-сайтов, а также начинающим разработчикам.
Нельзя защищаться от врага, не зная, какое оружие он использует. Первое, и самое важное, о чем следует узнать – какие существуют виды атак на сайты. Зная, как сайт можно взломать, гораздо проще понять, как его защитить, или в чем уязвимость, если сайт уже взломан. В этой статье я расскажу про основные виды атак, которые могут быть совершены на Joomla-сайт.
Особенность безопасности Joomla, как CMS с открытым исходным кодом.
Как известно, Joomla является проектом с открытым исходным кодом. Это означает, что код Joomla может просматривать любой желающий. Хорошо это или плохо? Вопрос спорный.
Чтобы понять преимущества и недостатки открытого кода, представим себе два ящика. Черный и прозрачный. Черный ящик представляет собой закрытый код. Если сайт работает на самописной CMS или же просто на PHP, то увидеть его исходный код нельзя. Все, что можно делать – отправлять какое-то входное воздействие и следить за результатом, который будет получен на выходе. Т.е. вы отправляется запрос (например, заполняете форму и отправляете данные), а в ответ получаете результат выполнения (например, данные успешно приняты или ошибка).
Если же говорить о прозрачном ящике, коим является любой проект с открытым исходным кодом, в том числе и Joomla, то мы можем видеть все процессы, которые в нем происходят. Все точки обработки данных. Можем легко понять причину того или иного результата, получаемого на выходе.
Так что же в итоге лучше с точки зрения безопасности: черный или прозрачный ящик? Первый ответ, который приходит в голову: конечно черный. Ведь незнание процессов обработки данных значительно усложняет взлом. Да, это так, но далеко не всегда. Если закрытый код писал действительно хороший программист, а затем он проходил тестирование, то вероятность взлома крайне мала. Проблема в том, что такой код в основном пишут только сотрудники крупных корпораций, например, Яндекс, Google, Mail.ru, Вконтакте и.т.д. Уровень сотрудников в таких компаниях обычно очень высокий, как и их зарплата. А теперь давайте подумаем, кто пишет сайты для малого и среднего бизнеса? Поверьте мне, далеко не гении программного кода. Зачастую, они допускают элементарные уязвимости, которые в состоянии обнаружить даже автоматические боты, что уж говорить, если за сайт возьмется хакер. Кроме того, закрытый код расслабляет. Зачем программисту писать код качественно, если его все равно никто не увидит?
Теперь посмотрим на открытый код. Да, он полностью просматривается, но этот момент носит не только негативную окраску. Если сообщество проекта с открытым кодом велико (как, например, в Joomla), то информация обо всех обнаруженных уязвимостях оперативно сообщается разработчикам и уязвимости закрываются. Так происходит много раз, в результате чего качество кода становится все выше. Таким образом, открытый код, на мой взгляд, предпочтительнее закрытого, но имеет особенности, которые требуется соблюдать. В первую очередь, это регулярное обновление как Joomla, так и ее расширений. Логика следующая: если вышло обновление безопасности, значит, в коде были найдены уязвимости. Если уязвимости были найдены, значит, о них стало известно. Если о них стало известно, значит, в ближайшее время ими кто-то попытается воспользоваться. Если своевременно обновить Joomla и расширения до последних версий, то уязвимости на сайте будут закрыты раньше, чем ими смогут воспользоваться. Т.е. можно спать спокойно.
Своевременное обновление является основной особенностью защиты Joomla. Важно это понимать. Вы можете не разбираться в тонкостях атак, но должны помнить, что заплатки нужно ставить вовремя, иначе ваш сайт не защитить.
Основные виды атак на Joomla-сайты. Подбор пароля.
Самая простейшая атака на любой сайт – подбор пароля администратора простым перебором. Если вы используете простой пароль на админку, то ждите беды. Как это происходит? Адрес административной панели Joomla широко известен: site.ru/administrator. Также известно, что стандартный логин администратора: admin. Посылаем по этому адресу робота, который будет день и ночь пытаться авторизоваться, используя распространенные пароли и словари, и рано или поздно, пароль будет подобран.
Как защититься от такой атаки? Изменить адрес админки, логин пользователя, использовать сложный пароль, установить защиту от роботов (капчу) в виде кода с картинки. Подробнее об этом я расскажу в отдельной статье.
Основные виды атак на Joomla-сайты. Социальная инженерия.
Еще один массовый тип атак, заключающийся в наплевательском отношении к безопасности владельца сайта ли его доверчивости. Первое хорошо демонстрирует вот эта картинка:
Второе чуть сложнее, но в общем случае выражается нарушением следующих правил:
- не давайте пароли к сайту людям, которым не доверяете;
- с достаточной регулярностью меняйте пароли;
- не ведитесь на звонки и электронные сообщения, в которых запрашивается пароль или требуется перейти по ссылке для его восстановления;
- всегда проверяйте адрес сайта в адресной строке перед тем, как ввести пароль;
- используйте на рабочем и домашнем компьютерах хороший антивирус, с обновленными базами;
- не работайте на компьютере с правами администратора;
- не храните на компьютере в открытом виде пароли к сайту.
Социальная инженерия находит уязвимости не в программном продукте, а в человеке, который им пользуется. На самом деле, всегда самым уязвимым местом любого программного продукта будет являться человек. Будьте бдительны!
Основные виды атак на Joomla-сайты. Специализированные атаки(XSS, SQL-инъекция и т.д.).
В эту группу можно отнести атаки в возможности совершения которых виноваты разработчики сайтов и расширений. Возникают подобные атаки обычно из-за недостаточной фильтрации пользовательских данных передаваемых на сервер. Теперь простым языком. Предположим, сайт позволяет пользователям размещать объявления. Это происходит следующим образом: пользователь регистрируется, заполняет форму объявления, объявление появляется на сайте. Атака происходит на этапе заполнения формы объявления. Обычно для таких форм используются текстовые поля, содержимое которых затем и показывается на сайте. Но что будет, если злоумышленник добавит в такое поле не только текст, но и ссылку на вредоносный скрипт? Объявление будет показано на сайте и посетителям, просматривающим его, будет загружаться вирус, ну или будет происходить другое вредоносное воздействие.
Чтобы такого не происходило, данные, загружаемые пользователями на сайт, должны проходить жесткую фильтрацию, исключающую возможность загрузить что-либо, кроме того, что предполагается. Решаться эта задача должна разработчиками на этапе создания расширения, но все мы люди и ошибки не являются редкостью. Для Joomla существуют специализированные расширения, проверяющие все формы и другие уязвимые места самостоятельно. О них речь пойдет в отдельной статье.
Основные виды атак на Joomla-сайты. DOS и DDOS атаки.
Опасный вид атак, связанный с ограниченными мощностями сервера, на котором размещается сайт. Суть атаки – отправить на сайт одновременно столько запросов, что сервер перестанет справляться с их обработкой и для обычных посетителей сайт станет недоступным. Понятно, что подобные атаки не могут быть постоянными, а длятся некоторое, хотя иногда и продолжительное, время. Обычно DDOS-атаки используются, когда сайт имеет высокую посещаемость и занимает высокие позиции по конкурентным запросам. DDOS-атаки стоят довольно дорого, но и защиты от них практически нет. Проблема в том, что запросы к сайту осуществляются с зараженных компьютеров обычных интернет-пользователей без их ведома. При этом становится очень сложно отделить обычных пользователей, которые зашли на сайт, от запросов атаки.
Иногда все бывает гораздо проще. На сайт заходит «особо одаренный» человек, который решает создать его копию для личного пользования или других целей. Не представляя себе, как вообще работает сайт, этот человек нагугливает программу, которая обещает скачать сайт целиком. Он устанавливает ее и запускает, натравливая на нужный ему сайт. Что делает программа? Она работает, как и индексирующие роботы поисковых систем: заходит на страницу, скачивает ее, переходит по всем внутренним ссылкам на другие страницы, скачивает их, с тех страниц переходит на следующие и.т.д. При этом получается некое подобие DOS-атаки, при которой большое количество запросов идет с одного адреса. Сайт не успевает обрабатывать их и становится недоступен, либо хостер отключает сайт за превышение нагрузки. Подобные вещи происходили и с wedal.ru. Защита тут очень простая. Считаем количество запросов с одного и того же IP-адреса за определенное время (например, 5 мин) и если оно превышает допустимое значение, блокируем этот адрес. К примеру, если за 5 минут с одного адреса поступило более 100 запросов, то заносим этот адрес в список заблокированных и доступ к сайту с него приостанавливается.
Основные виды атак на Joomla-сайты. Уязвимости сервера.
Часто случается, что во взломе сайта не виноват ни движок ни владелец. Уязвимость может быть найдена на сервере хостера, у которого расположен сайт. Этот случай является довольно частым, особенно когда используется малоизвествный дешевый хостинг. С одной стороны, качество специалистов на нем оставляет желать лучшего, с другой – для хакера это лакомый кусок, взлом которого может дать доступ сразу к сотням сайтов хостера.
Обезопасить сайт от подобных уязвимостей довольно просто: пользуйтесь услугами только проверенных крупных хостеров.
На этом все. Есть и другие виды атак, менее распространенные. Но они будут использоваться в тех случаях, когда ваш сайт представляет для хакера реальный интерес и он решит заняться им лично. Этот случай не частый, поскольку на 95% сайтов Интернета нет ничего, что могло бы интересовать хакеров столь сильно, чтобы они пытались взламывать сайт вручную. Если же сайт приносит действительно большую прибыль и является костью в горле конкурентов, то не грех заказать профессиональный аудит в компании, занимающейся безопасностью.
Об авторе
Wedal (Виталий). Веб-разработчик полного цикла (Full Stack). Создатель и автор сайта Wedal.ru.
Основной профиль – создание сайтов и расширений на CMS Joomla.
Понравилась статья? Сохраните себе на стену:
Вконтакте
Одноклассники
Google+
Ваша оценка материала очень важна для нас. Просим вас оценить статью или оставить отзыв в комментариях.wedal.ru