Joomla callback ошибка защиты от спама

Содержание

  1. Добавление любых дополнительных полей в форму обратной связи Wedal Joomla Callback
  2. Стандартный и измененный вид формы. Постановка задачи
  3. Шаг 1. Создаем альтернативные макеты формы и письма
  4. Шаг 2. Добавляем дополнительные поля в форму
  5. Шаг 3. Добавляем значения дополнительных полей в письмо
  6. Теоретическая возможность отправки спама через ваш сайт с использованием формы обратной связи Joomla
  7. Стандартная форма обратной связи Joomla
  8. Отправка спама от имени сайта с использованием формы обратной связи Joomla
  9. Как защититься от этой уязвимости?
  10. Как защитить форму обратной связи от спама?
  11. 1. Проверка сессии.
  12. 2. Включаем рекапчу.
  13. Создание формы обратной связи стандартными средствами Joomla.
  14. Создание формы обратной средствами Joomla. Компонент «Контакты».
  15. Компонент «Контакты». Добавление контакта.
  16. Компонент «Контакты». Добавление пункта меню контакта.
  17. Создание формы обратной средствами Joomla. Защита от спама.

Если вы являетесь постоянным читателем wedal.ru, но наверняка уже знакомы с бесплатным и очень удобным модулем обратной связи Wedal Joomla Callback.

Этот модуль позволяет добавлять простые и легкие формы обратной связи в разные части вашего Joomla-сайта. Формы как всплывающие, так и встроенные.

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

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

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

Стандартный и измененный вид формы. Постановка задачи

Для начала сформулируем задачу.

Стандартный максимальный набор полей формы обратной связи в модуле Wedal Joomla Callback выглядит следующим образом:

Предположим, что нам требуется более сложная форма, вот такая:

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

Ниже 3 шага, описывающие решение этой задачи.

Шаг 1. Создаем альтернативные макеты формы и письма

Wedal Joomla Callback позволяет нам использовать всю мощь системы альтернативных макетов Joomla. Мы можем создать для одного модуля любое количество разных макетов формы и письма. Поскольку мы хотим создать нестандартную форму, то правильнее всего будет создать для нее альтернативный макет.

Создать альтернативный макет очень просто. Идем в папку:

/modules/mod_wedal_joomla_callback/tmpl/

и копируем из нее все файлы в:

/templates/ваш_шаблон/html/ mod_wedal_joomla_callback/

Там всего 4 файла:

  • default.php
  • default_embeddedform.php
  • default_message.php
  • default_popupform.php

Если вам не нужны сразу и встроенная и всплывающая формы, то можно скопировать один из двух файлов: default_embeddedform или default_popupform.

После переноса файлов макетов в шаблон необходимо переименовать их, заменив «default» на любое другое слово, написанное английскими буквами. Допустим, это будет «equipment». Также предположим, что нам нужна только встроенная форма обратной связи (а значит, макет popupform можно пропустить).

Таким образом, у нас в папке:

/templates/ваш_шаблон/html/ mod_wedal_joomla_callback/

будет такой набор файлов:

  • equipment.php
  • equipment_embeddedform.php
  • equipment_message.php

Чтобы модуль использовал именно альтернативные макеты, нужно у него в настройках перейти на вкладку «Дополнительно» и в поле «Альтернативный макет» выбрать «equipment»:

После этих действий модуль будет использовать именно наши новые макеты. Можно перейти к их правке для подключения дополнительных полей.

Шаг 2. Добавляем дополнительные поля в форму

Для добавления дополнительных полей в форму нам нужно будет отредактировать альтернативный макет equipment_embeddedform.php. Если бы форма требовалась не встроенная, а всплывающая, то мы бы редактировали макет с постфиксом _popupform (надеюсь, это понятно и далее не возвращаюсь к этому уточнению).

Все, что нам нужно сделать – добавить в код макета html-разметку для дополнительных полей. Формат этой разметки может быть любым. Вот здесь вы сможете посмотреть примеры html-кода для полей разных типов:

Нас для поставленной задачи интересует 2 типа полей:

  • текстовое поле для ввода роста и веса
  • чекбоксы для выбора мест

Для роста и веса html-код полей будет таким:

Для чекбоксов выбора мест html-код будет таким:

Давайте подробнее рассмотрим этот код:

  • Оберткиdiv не являются обязательными и добавлены только для удобства оформления
  • Тегиlabel также не являются обязательными и добавлены для отдельного вывода заголовков полей
  • Теги полейinput – единственные элементы, являющиеся обязательными в этом коде
  • У тегов input обязательно должен быть атрибут name, т.к. именно по нему мы будем идентифицировать поле. Названия полей в атрибуте name могут быть любыми, но важно, чтобы они не повторялись в нескольких полях.
  • Конструкция WJCForm _ настоятельно рекомендуется, хотя и не является обязательно в некоторых случаях. Поясню. Если вы не планируете использовать несколько одинаковых форм на одной странице, то включать ID-модуля в названия и идентификаторы полей необязательно. Но все-таки лучше их добавить. Ведь кто знает, куда вас заведет извилистая дорожка веб-разработки…J

На самом деле добавляемый код абсолютно тривиальный. Вы можете добавлять и других типы полей с другими атрибутами. Место вставки также выберите сами. Оно зависит от того, где вы хотите показать поля в форме. Главное, чтобы они были внутри тега form.

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

Шаг 3. Добавляем значения дополнительных полей в письмо

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

Здесь тоже все максимально тривиально. Для получения значений полей вставляем в начале макета, после строчки:

Разберем этот код. Здесь мы просто получаем и записываем в переменные данные из отправленной формы. Важно подставить корректные имена полей и, если вы хотите валидировать поля, то тип фильтра.

Подробнее об этом можно почитать здесь:

Далее, выводим в письме наши переменные в том месте, где хотим:

По этому коду не должно быть вопросов.

Вот и всё. Ваша новая уникальная форма готова к работе. Если вы хотите создать несколько разных форм с уникальными полями, просто выполните этот кейс несколько раз, меняя названия альтернативных макетов и выбирая нужный макет в каждом модуле, в админке.

Источник

Теоретическая возможность отправки спама через ваш сайт с использованием формы обратной связи Joomla

Не так давно я столкнулся с действующим методом, который позволяет злоумышленнику отправлять спам от имени вашего сайта, используя форму обратной связи Joomla (форму контакта). Эта возможность не является уязвимостью, и вряд ли будет исправлена. В этой статье я расскажу о том, как такое стало возможно, и что нужно делать, чтобы защитить свой сайт.

Стандартная форма обратной связи Joomla

В Joomla есть довольно мощный и гибкий компонент, который называется «Контакты». Это стандартный компонент Joomla. Он есть на каждом сайте, т.к. устанавливается вместе с CMS. Данный компонент позволяет создавать и выводить на сайт категории контактов, контакты, формы обратной связи, позволяющие связаться с тем или иным контактом. Контакт – это, условно, пользователь – человек с сайта.

Когда-то я писал статью о том, как можно создать на сайте форму обратной связи стандартными средствами Joomla. Данная инструкция актуальна и сейчас. Она позволяет создать вполне себе годную форму обратной связи без установки сторонних расширений. Отправка спама возможна, когда используется именно эта форма, а также, при одновременном стечении некоторых обстоятельств, о которых пойдет речь ниже.

Отправка спама от имени сайта с использованием формы обратной связи Joomla

Вы удивитесь, насколько прост обнаруженный способ отправки спама от имени сайта. Чтобы он был возможен, форма обратной связи должна выглядеть примерно так:

Т.е. должны выполняться два условия:

  1. Форма не защищена от спам-ботов (не подключена reCaptcha или какой-либо другой способ защиты формы)
  2. В настойках контакта активирована опция «Отправлять отправителю копию письма». Благодаря ей в контактной форме появляется соответствующий чекбокс (см. рисунок выше).

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

  1. Спам-бот находит контактную форму. Защиты от спама нет – можно использовать.
  2. Спам-бот определяет, что сайт на Joomla, и что используется стандартная форма контактов. Удивительно, но есть боты, которые прекрасно умеют это делать.
  3. Спам-бот видит наличие чекбокса отправки копии письма отправителю.
  4. Спам-бот подставляет в поле Email адрес из собственной базы спам-рассылки, поле сообщения заполняет спамом. Как заполнены остальные поля неважно.
  5. Спам-бот отправляет форму и повторяет процесс многократно, подставляя все новые и новые адреса из собственной базы в поле Email.

Что происходит в результате? Joomla думает, что форму заполнил человек, который указал свой реальный адрес и хочет связаться с контактом с сайта. Поскольку галочка отправки копии письма установлена, то письма от сайта получают двое: человек, чей адрес привязан к контакту, и человек, чей адрес введен в поле Email.

Таким образом, подставляя в поле Email разные адреса, можно отправить тысячи сообщений от имени вашего сайта. Да, возможно контакт увидит это, быстро поймет, в чем дело, и прикроет лазейку, но очень велика вероятность, что этого не произойдет.

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

Как защититься от этой уязвимости?

Как защититься от этой уязвимости? Элементарно. Сделайте так, чтобы одно из условий, описанных выше, не выполнялось, а именно:

  • Подключите reCaptcha к форме обратной связи Joomla (здесь есть инструкция)
  • Отключите в настройках контакта опцию «Отправлять отправителю копию письма»

После этого можете спать спокойно. =)

Надеюсь, данная инструкция поможет кому-то сделать свой Joomla-сайт чуточку безопаснее. Не забывайте про основные заблуждения, угрожающие безопасности вашего сайта. Следите за обновлениями и регулярно делайте резервные копии.

Источник

Как защитить форму обратной связи от спама?

Часто в Joomla, в качестве формы обратной связи используется стандартный компонент контактов.

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

Эта форма хороша тем что после отправки сообщения пользователем, может перенаправлять на определённый URL адрес.
Например на страницу «Спасибо» и т.п.

Также хороша тем, что её можно защитить от спам ботов, которыми переполнен весь Рунет.

Поэтому в данной заметке рассмотрим как защитить стандартную форму от ботов.

1. Проверка сессии.

Самое первое, это включить проверку сессии.
Обычно она уже включена.

Боты не могут сохранять куки, а значит и не могут поддерживать сессии.
Конечно, технологии не стоят на месте, и некоторые боты вроде как научились работать с сессиями.
Но и на них управа найдётся.

2. Включаем рекапчу.

Стандартно в Joomla уже есть плагин капча — Рекапча.
Это сервис от Гугл, который помогает фильтровать ботов.

Чтобы использовать этот плагин, нужно зарегистрироваться в сервисе рекапча >>

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

Эти ключи нужно указать в настройках плагина рекапча и выбрать версию 2.0

После этого сохраняем настройки и переходим к общим настройкам Joomla.
Система — Общие настройки.

И выбираем в качестве капчи Captcha — reCaptcha

Готово!
Теперь форма обратной свзяи защищена от роботов при помощи рекапчи от Google.

Конечно, способов защиты ещё много, можно даже обойтись и без капчи, поэтому вопрос.

Вопрос к вам:

Используете ли вы стандартную джумловскую форму обратной связи?
Если нет, то почему?
Может быть есть смысл в её доработке?

Источник

Создание формы обратной связи стандартными средствами Joomla.

Одним их наиболее востребованных элементов сайта была и остается форма обратной связи. Она представляет собой удобный способ установления контакта посетителей с владельцем сайта. Многие веб-мастера устанавливают себе сторонние расширения для организации формы обратной связи, но мало кто знает, что создать ее можно и стандартными средствами Joomla. Это гораздо правильнее, поскольку каждое стороннее расширение требует отдельного обновления и отслеживания уязвимостей. В этой статье я расскажу о том, как создать форму обратной связи, защищенную от спама, с помощью стандартных средств Joomla.

Иногда бывает так, что вы давно уже знакомы с Joomla и вроде бы знаете эту CMS достаточно хорошо, но в один прекрасный день обнаруживаете новую возможность, которая все это время имелась в Joomla, но вы о ней даже не подозревали. Точно также получается и с формой обратной связи – она есть, но найти ее довольно непросто.

Помимо стандартной формы обратной связи советую попробовать мой модуль Wedal Joomla Callback. Он бесплатен и позволяет загружать и отправлять форму обратной связи без перезагрузки страницы.

Создание формы обратной средствами Joomla. Компонент «Контакты».

Скажите честно, сколько раз вы пытались разобраться со стандартными компонентами Joomla, которые доступны сразу после ее установки? Не знаю почему, но ассоциации такие, что это простейшие, базовые вещи, которые вряд ли когда-то понадобятся. На самом деле бывает наоборот.

В Joomla есть стандартный компонент с названием «Контакты». Легко понять, что он позволяет показать на сайте список контактов владельцев сайта, менеджеров и.т.д. Вы скажете: «Ну и зачем разбираться с целым компонентом, если можно просто создать статью, указав в ней необходимые контактные данные?». Во многом вы будете правы. Но, к сожалению, поступив именно так, вы никогда не узнаете, что компонент «Контакты» позволяет создать отдельную форму обратной связи для каждого контактного лица. Уже интереснее?

На сайте Wedal.ru вы можете увидеть пример такой формы:

Как видите, все необходимое для связи имеется. Этой формой посетители пользуются достаточно часто. Как ее создать?

Компонент «Контакты». Добавление контакта.

Переходим в «Компоненты» –> «Контакты» и добавляем новый контакт.

Появится следующая форма:

Здесь вы указываете имя контакта, и выбираете пользователя, который будет связан с контактом. Обычно это администратор.

В поле «Дополнительная информация» можете указать какой-то текст, который требуется показать на странице контакта.

Во вкладке «Детали контакта» не заполняем ничего.

Во вкладке «Настройки отображения» скрываем все лишнее:

Во вкладке «Форма обратной связи» показываем форму:

Компонент «Контакты». Добавление пункта меню контакта.

После того, как контакт создан, необходимо показать его на сайте. Для этого создаем в меню пункт «Контакты» или «Обратная связь» и выбираем для него тип «Контакты» –> «Контакт»:

После этого в появившейся справа форме выбираем созданный нами контакт:

На этом все. Можно смотреть на нашу форму на сайте.

Важно! Обязательно проверьте работоспособность полученной формы обратной связи. Иногда, из-за неправильных настроек отправления писем, почта не отправляется. Это ошибка не формы контактов, а настроек Joomla по работе с почтой (смотрите общие настройки Joomla).

Создание формы обратной средствами Joomla. Защита от спама.

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

Как защитить форму обратной связи от спама? В Joomla 2.5 имеется поддержка наверное самой лучшей капчи(код с картинки) reCAPTCHA. Алгоритм ее активации следующий:

1) Получение ключей. Чтобы получить ключи активации, нужно перейти на страницу http://www.google.com/recaptcha/whyrecaptcha и нажать кнопку «Sign Up Now». Вам будет предложено авторизоваться в аккаунте Google(сервис reCaptcha принадлежит Google). Если такового нет, то придется зарегистрировать. После авторизации вас попросят ввести адрес сайта:

И после этого будут сгенерированы два ключа.

Вся процедура получения ключей и пользования ими бесплатна.

2) Идем в менеджер плагинов сайта и находим там плагин «CAPTCHA — reCAPTCHA».

В его настройках видим поля для ввода ключей:

Вводим ключи, активируем плагин и сохраняем его.

3) Переходим в компонент контактов и открываем настройки:

В опции «Включить CAPTCHA» выбираем «CAPTCHA — reCAPTCHA». Сохраняем. Готово. Теперь капча появится в нашей форме обратной связи.

Кстати, reCAPTCHA может использоваться не только в форме обратной связи, но и при регистрации пользователей (активируется в настройках менеджера пользователей).

На этом всё. Потратив 5 минут, можно создать простую и удобную форму обратной связи для вашего Joomla-сайта, не прибегая к использованию сторонних расширений.

Источник

Создание формы обратной связи стандартными средствами Joomla.

Одним их наиболее востребованных элементов сайта была и остается форма обратной связи. Она представляет собой удобный способ установления контакта посетителей с владельцем сайта.  Многие веб-мастера устанавливают себе сторонние расширения для организации формы обратной связи, но мало кто знает, что создать ее можно и стандартными средствами Joomla. Это гораздо правильнее, поскольку каждое стороннее расширение требует отдельного обновления и отслеживания уязвимостей.  В этой статье я расскажу о том, как создать форму обратной связи, защищенную от спама, с помощью стандартных средств Joomla.

Иногда бывает так, что вы давно уже знакомы с Joomla и вроде бы знаете эту CMS достаточно хорошо, но в один прекрасный день обнаруживаете новую возможность, которая все это время имелась в Joomla, но вы о ней даже не подозревали. Точно также получается и с формой обратной связи – она есть, но найти ее довольно непросто.

Помимо стандартной формы обратной связи советую попробовать мой модуль Wedal Joomla Callback. Он бесплатен и позволяет загружать и отправлять форму обратной связи без перезагрузки страницы.

Скажите честно, сколько раз вы пытались разобраться со стандартными компонентами Joomla, которые доступны сразу после ее установки? Не знаю почему, но ассоциации такие, что это простейшие, базовые вещи, которые вряд ли когда-то понадобятся. На самом деле бывает наоборот.

В Joomla есть стандартный компонент с названием «Контакты». Легко понять, что он позволяет показать на сайте список контактов владельцев сайта, менеджеров и.т.д. Вы скажете: «Ну и зачем разбираться с целым компонентом, если можно просто создать статью, указав в ней необходимые контактные данные?». Во многом вы будете правы. Но, к сожалению, поступив именно так, вы никогда не узнаете, что компонент «Контакты» позволяет создать отдельную форму обратной связи для каждого контактного лица. Уже интереснее?

На сайте Wedal.ru вы можете увидеть пример такой формы:

joomla-feedback-form

Как видите, все необходимое для связи имеется. Этой формой посетители пользуются достаточно часто. Как ее создать?

Компонент «Контакты». Добавление контакта.

Переходим в «Компоненты» –> «Контакты» и добавляем новый контакт.

Появится следующая форма:

joomla-feedback-form

Здесь вы указываете имя контакта, и выбираете пользователя, который будет связан с контактом. Обычно это администратор.

В поле «Дополнительная информация» можете указать какой-то текст, который требуется показать на странице контакта.

Во вкладке «Детали контакта» не заполняем ничего.

joomla-feedback-form

Во вкладке «Настройки отображения» скрываем все лишнее:

joomla-feedback-form

Во вкладке «Форма обратной связи» показываем форму:

joomla-feedback-form

Сохраняем.

Компонент «Контакты». Добавление пункта меню контакта.

После того, как контакт создан, необходимо показать его на сайте. Для этого создаем в меню пункт «Контакты» или «Обратная связь» и выбираем для него тип «Контакты» –> «Контакт»:

joomla-feedback-form

После этого в появившейся справа форме выбираем созданный нами контакт:

joomla-feedback-form

И сохраняем.

На этом все. Можно смотреть на нашу форму на сайте.

Важно! Обязательно проверьте работоспособность полученной формы обратной связи. Иногда, из-за неправильных настроек отправления писем, почта не отправляется. Это ошибка не формы контактов, а настроек Joomla по работе с почтой (смотрите общие настройки Joomla).

Создание формы обратной средствами Joomla. Защита от спама.

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

Как защитить форму обратной связи от спама? В Joomla 2.5 имеется поддержка наверное самой лучшей капчи(код с картинки) reCAPTCHA. Алгоритм ее активации следующий:

1) Получение ключей. Чтобы получить ключи активации, нужно перейти на страницу http://www.google.com/recaptcha/whyrecaptcha и нажать кнопку «Sign Up Now». Вам будет предложено авторизоваться в аккаунте Google(сервис reCaptcha принадлежит Google). Если такового нет, то придется зарегистрировать. После авторизации вас попросят ввести адрес сайта:

joomla-feedback-form

И после этого будут сгенерированы два ключа.

Вся процедура получения ключей и пользования ими бесплатна.

2) Идем в менеджер плагинов сайта и находим там плагин «CAPTCHA — reCAPTCHA».

В его настройках видим поля для ввода ключей:

joomla-feedback-form

Вводим ключи, активируем плагин и сохраняем его.

3) Переходим в компонент контактов и открываем настройки:

joomla-feedback-form

joomla-feedback-form

В опции «Включить CAPTCHA» выбираем «CAPTCHA — reCAPTCHA». Сохраняем. Готово. Теперь капча появится в нашей форме обратной связи.

Кстати, reCAPTCHA может использоваться не только в форме обратной связи, но и при регистрации пользователей (активируется в настройках менеджера пользователей).

На этом всё. Потратив 5 минут, можно создать простую и удобную форму обратной связи для вашего Joomla-сайта, не прибегая к использованию сторонних расширений.

Об авторе

Об авторе

Wedal (Виталий). Веб-разработчик полного цикла (Full Stack). Создатель и автор сайта Wedal.ru.

Основной профиль – создание сайтов и расширений на CMS Joomla.

  • Об авторе
  • Портфолио
  • Услуги
  • Контакты

В предыдущей статье я рассказывал как защищать устаревшую джумлу и админку от перебора паролей. Но при этом многие задаются вопросом: «Почему мне приходит спам с моего сайта через установленную на моем сайте форму обратной связи?».

Убрать спам с контактной формы сайта

Убрать спам с контактной формы сайта

На этот раз я расскажу о вариантах защиты всяческих контактных форм и полей конструкторов, калькуляторов — вообщем того, что отправляет письмо администратору сайта. Мало того, что порой неинтересно читать спам или рекламу, которую прислали вместо потенциального клиента, уязвимость форм обратной связи грозит ещё баном от хостинга почтовой службы. И ваши клиенты в этот день уже не смогут отправить вам  заявку.

Поэтому стоит заранее подумать о защите, а не когда заспамят по самое не хочу. Хотя в большинстве случаев владельцы сайтов думают, что сайт никому не интересен и не догадываются, что на них могут выйти боты. Другая половина считает, что лишние поля отпугивают потенциальных посетителей, а в некоторых случаях и слишком сложны для заполнения. В любом случае давайте разбирать подробнее.

Установка капчи на сайт как защита от спама

Чтобы предотвратить массовую отправку данных, следует своевременно позаботиться о защите подписных форм. Конечно, самым действенным вариантом будет установка капчи (captcha) — рисунка, текст или цифры с которого надо будет ввести в отдельное поле для подтверждения, что вы не робот. На данный момент существует огромный выбор разновидностей капчи:

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

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

Recaptcha как универсальная альтернатива всем капчам

С выходом второй версии рекапчи от гугла она кардинально изменилась: сложным, длинным и неразборчивым фразам на смену пришёл поведенческий анализ. Теперь при первых попытках не надо вводить проверочных фраз — достаточно поставить галку подтверждения и проверка пройдена. При подозрительной активности Вам предложат сделать несложные действия, к примеру выбрать изображения с природой или витринами.

Удобство нового метода смогли оценить многие пользователи, поэтому многими разработчиками API рекапчи интегрировано в программный код, необходимо только получить уникальные ключи на домен.

Recaptcha 2 в Joomla

В популярной CMS джумла рекапча реализована системным плагином, поэтому стоит выбрать её в настройках, активировать плагин и ввести полученные ключи. После этого как системные компоненты могут обращаться к гуглокапче (к примеру, регистрация пользователей или стандартная контактная форма), так и различные сторонние модули и расширения (Virtuemart, сторонние контактные формы, Jcomments и другие).

Немного по другому ситуация обстоит в более старых версиях (Joomla 1.5 и 2.5). Максимум там можно найти первую капчу от гугла, но она настолько отпугивает своей сложностью, что стоит подумать или о дописывании своего варианта или решиться на миграцию на последнюю версию.

WordPress и рекапча от гугла

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

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

Поэтому на мой взгляд вп требует допила.

Невидимая Recaptcha

Google анонсировала бета-тестирование нового типа рекапчи — Invisible reCAPTCHA. Как Вы знаете, усовершенствованная версия позволяла отличать ботов от настоящих людей на ранней стадии и предлагала реальным людям нажать простую кнопку. В то же время некоторые раскритиковали необходимость данного действия. Поэтому сейчас есть возможность опробовать новую вариацию — теперь и эту кнопку жать не надо, а рекапча будет сама анализировать момент появления на сайте. С одной стороны это облегчит жизнь пользователям, с другой стороны возможны проколы с пропуском ботов, однако это уже время покажет.

Для того, чтобы поставить новую невидимую рекапчу на сайт, необходимо получить отдельные ключи. Также необходимо реализовать функция обратного вызова (callback) для проверки легитимности. Более подробную информацию можно найти в API, и когда с ним разберусь, постараюсь выложить пример реализации на сайте.

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

Рекапча на произвольном сайте

На самом деле нету ничего сложного в реализации recaptcha в любом модуле или самописной форме обратной связи. На сайте расписано подробное API как реализовать необходимую проверку. С размещением кода на фронтэнде обычно не возникает проблем, однако не все могут корректно отослать запрос проверки секретного ключа.

Поэтому я рассмотрю простой вариант back-end отправки json на php

<?php $recaptcha_secret = "XXXXXXXXXXXXXXXXXXXXXXX"; // Ваш секретный ключ
$response = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$recaptcha_secret."&response=".$_POST['g-recaptcha-response']."&remoteip=".$_SERVER['REMOTE_ADDR']);
$response = json_decode($response, true);
if($response["success"] === true)
{
// Здесь должно происходить действие при корректном прохождении проверки
}
else
{
// Иначе выдаем какую-то ошибку
}
?>

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

Защищаем форму обратной связи без капчи

Капча поможет решить нам проблему со спамом, однако многих она раздражает, и многие стараются обходиться без неё. Кроме этого, существуют различные сервисы как антигейт по обходу капчи (там люди за деньги заполняют данные с капчи). Поэтому не лишним будет рассмотреть альтернативные варианты. Для популярных CMS существуют готовые решения, в других случаях придется применить навыки программирования либо обратиться к специалистам.

Итак, я расскажу пару приемов, как повысить защищенность формы без капчи.

Скрытые поля как защита форм

Создаем hidden поля. Достаточно для заполняемых полей (name,phone, email)  в стилях прописать display:none; и дополнительно создать поля с нестандартными атрибутами name (к примеру phone-protect). Обязательно надо изменить код под новые поля и добавить ещё одну проверку: если наши скрытые поля будут заполнены ( или изменены дефолтные значения), тогда будет выдавать ошибку » Спам здесь не пройдет, обнаружен бот».

Этот метод дает большой выбор пофантазировать в вариантах проверок и названий полей, а значит своей нестандартностью защититься от большего количества ботов

Используем cookies для проверки уникальность посетителя

Проверяем cookies. Тут можно создавать разнообразные варианты. При этом с помощью куков можно реализовать проверку на однократное исполнение формы ( К примеру пользователь отправил заявку, и начинает снова и снова заполнять форму обратной связи — вдруг он просто конкурент. А ему в ответ » Вы уже отправили свою заявку»).

Преимущество данного метода закрывает заодно достаточно распространенную уязвимость, на которую часто закрывают глаза, — CSRF данных формы. А ведь с помощью этой дыры можно совершать множество виртуозных атак.

Фильтрация входящих данных контактных форм обратной связи

Хорошая валидация полей на корректное заполнение является примером тоном правильного программирования. Это не только обезопасит Ваш сайт  от SQL инъекций и XSS-уязвимостей, но с учетом того, что боты заполняют случайными значениями, в большинстве случаев они могут не пройти элементарной проверки на корректный телефон. Как дополнительный вариант можно устроить какую-нибудь самописную подгрузку какой-нибудь проверки на Javascript — чем больше уникальность вашего решения, тем меньше шансов пройти спаму!

Не забудьте проверить, не изменилась ли работоспособность с вашими правками!!! С этими советами можно защитить сайт от спама в формах обратной связи. Ну а в следующей статье я расскажу, как бороться против примитивных DDos-атак и снизить нагрузку на сервер от ботов.

создание формы обратной связи Добрый день, уважаемые читатели! Продолжаем создавать сайт на Joomla и следующим нашим действием будет создание формы обратной связи и ее защита от спама. Протестировав два компонента для создания формы – компонент Контакты, установленный по умолчанию в Joomla и установив дополнительно бесплатный компонент  aiContactSafe – я пришла к выводу, что не имеет смысла тратить время на установку и настройку каких – либо дополнительных компонентов, а лучше воспользоваться установленной по умолчанию. Поверьте, она ничем не уступает другим, и ее очень просто настроить. Поэтому сегодня будем рассматривать создание формы обратной связи посредством компонента, установленного по умолчанию.

Создавая сайт на любую тематику Вам не обойтись без страницы с контактной информацией, как на одного человека – автора сайта, так и на группу людей или же страницы, с формой обратной связи для отправки сообщений на прикрепленный к ней адрес. Все это поможет воплотить  один бесплатный компонент Контакты.

Настройка Контактов на Joomla

Чтобы приступить к настройкам компонента Контакты нам необходимо зайти в административную панель сайта и выбрать вкладку “Компоненты” — ”Контакты”. В выпавшем окне кликаем по пункту “Категории контактов”

создание формы обратной связи

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

На открывшейся странице у Вас не будет создано не одной категории, поэтому мы ее сами создадим кликнув на кнопку “Новый”

создание формы обратной связи

Нам предлагается заполнить два поля “Заголовок” нашей категории и ее ”Псевдоним” и еще обязательно ставим галочку в строке “Опубликовано”

создание формы обратной связи

Сохраняем произведенные настройки, нажав в правом верхнем углу по кнопке “Сохранить”. Категорию создана теперь осталось только создать саму страницу с контактом. Для этого заходим во вкладку “Контакты”

создание формы обратной связи

Где затем нажимаем на кнопку “Новый”, расположенную в правом верхнем углу.

Откроется диалоговое окно, где часть информации указываем обязательно, а часть на свое усмотрение.

Так обязательно заполняем поле Название – где указываем имя контакта или его псевдоним.

В поле Псевдоним указываем имя на латинице.

Ставим галочку в положение “да” в строке Опубликовано, а также указываем к какой категории относится данный контакт. Чуть ниже, в выпадающем окне, “Связь с пользователем” указываем то контактное лицо, кому будет отправляться сообщение, написанное читателем.

создание формы обратной связи

В поле “Информация” обязательно указываем Положение, занимаемое на сайте, и e-mail. Остальные же пункты заполняете по желанию.

Я добавила для примера еще и небольшую картинку, которую предварительно загрузила в папку stories, расположенную в директории Сайт – Медиа менеджер

А вот в разделе “Параметры” ставим галочки там, где хотим чтобы это значение отражались в форме контактов.

Указав все необходимые пункты сохраняем настройки, нажав в правом верхнем углу кнопку “Сохранить”

Добавляем пункт Контакты в меню

После того как мы произвели настройки формы обратной связи необходимо ее вывести на сайт посредством пункта меню. Для этого в административной панели выбираем вкладку “Меню” и в ней выбираем то меню, в котором должен отражаться пункт.

создание формы обратной связи

И создаем в этом меню новый пункт меню, нажав на кнопку “Создать”. Откроется структура типов меню, которое можно создать в Joomla и выбираем Контакты – Страница  контакта

создание формы обратной связи

На открывшейся странице задаем название пункту меню, прописываем его псевдоним, включаем отражение пункта и в Основных параметрах в поле “Выберите контакт” указываем контакт к которому привязываем данный пункт меню.

создание формы обратной связи

Сохраняем настройки и проверяем что получилось.

Итак , в верхнем меню у меня появился пункт контакты

контакт

нажав по которому откроется страница с обратной формы связи

создание формы обратной связи

По идеи форма отражается и все работает отлично и можно было бы на этом остановиться, но…. Дело в том, что у Joomla нет встроенной защиты от добавления спама в форму обратной связи и в форму регистрации. И Вас просто может завалить сообщениями посылаемыми ботами.

Защитить форму контактов от спама

Чтобы этого не произошло предлагаю сразу же на форму контактов установить капчу, а для этого необходимо установить плагин Joomlaxi Captcha.

Плагин устанавливается стандартным образом через панель Расширения – Установка Удаление – Закачать файл пакет.

После успешной установки плагина в панели Плагины появляется новый пункт, Joomlaxi Captcha

Защитить форму контактов от спама

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

Защитить форму контактов от спама

Здесь мне предлагается установить ширину и высоту капчи, а также сколько символов должно отражаться для ввода  (characters). Затем меняю цвет фона с помощью поля background color и цвет шрифта –text color. С помощью поля noise color –задаю цвет шума, а в поле font to use устанавливаю стиль отражения капчи. Можно также изменить и размер шрифта.

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

На этом я сегодня завершу создание сайта на Joomla. Всем удачи и до новых встреч на блоге “Seo записки отчаянной”

Быстрая регистрация с защитой от спама в Joomla своими руками

Скажите честно, вам нравится встроенная в Joomla система регистрации?  Мне нет.  Она слишком неоднозначна, она устарела. Кроме того, через форму регистрации Joomla возможна рассылка спама.

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

Стандартная форма регистрации Joomla довольно неоднозначна. Лично мне она совсем не нравится. Выглядит она так:

1

С одной стороны, всё довольно очевидно и логично. Но с другой стороны, многие ли из вас смогут ответить, что такое «логин», и чем он отличается от «имени»? Зачем вообще запрашивать и имя и логин? Поля ввода повторного email и пароля нужны, чтобы пользователь не ошибся, но, согласитесь, вводить два раза свою электронную почту раздражает.

К сожалению, регистрация в Joomla устроена именно таким образом. На эти поля завязана вся система и просто так убрать их нельзя.

Использование стандартной регистрации Joomla для рассылки спама

Есть еще одна проблема, о которой, уверен, многие не знают. Какая-то умная голова догадалась использовать форму регистрации Joomla для рассылки спама.

«Как такое возможно?» – спросите вы. Очень просто. Страница формы регистрации Joomla стандартная:

index.php?option=com_users&view=registration

Это означает, что зайдя на любой сайт, работающий на Joomla, и введя этот URL, вы попадете на форму регистрации, содержащую стандартный набор полей.

Далее бот заполняет поля любыми данными. Главное – подставить в поле «Имя пользователя» текст спам-сообщения. После того, как регистрация отправляется, имя пользователя (спам-сообщение) видит, по крайней мере, администратор сайта. Это в лучшем случае. В худшем, если на сайте опубликован модуль последних зарегистрированных пользователей, могут видеть и посетители сайта.

Вот такой вот необычный способ рассылки спама. Если вам кажется, что я его придумал, то нет. Это реальные случаи из практики. Вообще, такой спам не доставляет особых проблем, но вот база данных постепенно наполняется спам-пользователями, что не есть хорошо.  Примерно вот так это выглядит в админке:

2

Как должна выглядеть быстрая форма регистрации?

Давайте подумаем, как должна выглядеть идеальная форма регистрации. В моем представлении, это форма, содержащая минимум полей, которую сможет заполнить даже ребенок. Чаще всего к таким полям относятся контактные данные (Email или телефон) и имя пользователя (просто чтобы знать, как к пользователю обращаться).

«А как же логин и пароль?» – спросите вы. Я сторонник следующего подхода. Логин должен соответствовать двум требованиям:

  • Быть уникальным для каждого пользователя
  • Быть запоминающимся (таким, который пользователь легко вспомнит, даже если долго не заходил на сайт)

Этим двум требованиям лучше всего соответствуют Email и телефон пользователя. Но если телефон – это что-то личное, то, чем пользователь не всегда готов делиться, то запрос email – стандартная процедура при регистрации на любом сайте. Таким образом, в качестве логина лучшим решением мне видится использования адреса электронной почты. Этот адрес всегда будет уникальным для пользователя, и, с высокой долей вероятности, пользователь вспомнит его, даже если давно не заходил на сайт.

С паролем всё не так однозначно. Главное требование к паролю: его сложность. Она используется для защиты от подбора пароля. Но заставлять пользователя самому придумывать для себя сложный пароль, на мой взгляд, не лучшая идея. Просто представьте: вас заставляют придумать буквенно-цифровой пароль в N символов, содержащий строчные и заглавные буквы, а потом вам нужно еще и повторить его в поле подтверждения. Ужас. Почему-то разработчики Joomla пошли именно по этому пути, добавив настройки по требованиям к сложности пароля при регистрации.

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

Давайте подведем итог по полям формы регистрации (было –> стало):

  • Имя –> Имя
  • Логин > Email
  • Пароль > Скрыто, генерируется автоматически
  • Повтор пароля –> Скрыто, генерируется автоматически
  • Адрес электронной почты –> Скрыто, заполняется из поля «Логин»
  • Подтверждение адреса электронной почты –> Скрыто, заполняется из поля «Логин»

Таким образом, от 6 полей в форме регистрации, заполнения пользователем потребуют только два: Имя и Email. В результате форма регистрации будет выглядеть так:

3

Согласитесь, гораздо лучше, чем раньше. Но мне хочется упростить ее еще больше. Давайте уберем заголовки полей внутрь, с помощью атрибута placeholder, и уберем надпись о том, что звездочка – это обязательные для заполнения поля (сейчас это понятно уже интуитивно). Путем таких несложных манипуляций мы сделали форму еще проще:

4

Вот теперь, на мой взгляд, идеально =).

Есть еще некоторые смежные вопросы по процессу регистрации.

Стоит ли заставлять пользователей подтверждать email при регистрации?

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

Стоит ли использовать подтверждение адреса электронной почты? Здесь нет однозначного ответа. Если реальность email-адреса пользователя для вас очень важна, то стоит включить такое подтверждение, но при этом быть готовым к тому, что часть адресов может быть фейковой. Если же ваша главная задача – максимально упростить для пользователя прохождение процесса регистрации (например, в момент заказа в интернет-магазине), то можно и отказаться от этой опции. Так или иначе, переключить ее вы можете в настройках менеджера пользователей Joomla.

Нужна ли отдельная страница для регистрации?

По умолчанию Joomla предлагает только один вариант регистрации – на отдельной странице, адрес которой я уже писал выше. Иногда может быть удобнее производить регистрацию в модуле  Joomla, или, например, во всплывающем окне. Что-то вроде:

5

Если вы хотите использовать такой нестандартный вид регистрации в Joomla, будьте готовы написать немного дополнительного кода.

Нужна ли защита от автоматических регистраций?

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

Теперь, когда мы определились с внешним видом и функциональностью нашей быстрой регистрации, пора перейти непосредственно к ее реализации.

Создание быстрой формы регистрации

1) Переопределяем макет страницы регистрации в используемый шаблон Joomla.

 Для этого копируем файл:

/components/com_users/views/registration/tmpl/default.php

в:

/templates/ВАШ_ШАБЛОН/html/com_users/registration/

Каталоги, которых не хватает, создаем сами. Все дальнейшие действия производим уже в переопределенном файле.

2) Создаем, и подключаем к переопределенному макету файлы JS и CSS

Для автоматического заполнения полей нам потребуется использовать немножко JavaScript. Мы можем написать его или в общем файле JS, который подключен к шаблону, или создать новый файл и подключить его только в макете регистрации. Пойдем вторым путем.

В папке /templates/ВАШ_ШАБЛОН/html/com_users/registration/ создаем новый файл registration.js . Пока он пустой.

Чтобы данное решение было легко переносимым между сайтами, и не было привязано к отдельному шаблону, также мы добавим в папку отдельный файл стилей registration.css:

 /templates/ВАШ_ШАБЛОН/html/com_users/registration/registration.css . Он тоже пока пустой.

В переопределенном макете регистрации Joomla в начале находим строчку:

JHtml::_('behavior.formvalidator');

И заменяем ее на:

$app = JFactory::getApplication();
$document = JFactory::getDocument();
$document->addScript('/templates/'.$app->getTemplate().'/html/com_users/registration/registration.js');
$document->addStyleSheet('/templates/'.$app->getTemplate().'/html/com_users/registration/registration.css');

Если всё верно, в исходном коде страницы регистрации появится подключение файлов registration.js и registration.сss . Они должны корректно открываться браузером.

3) Создаем  JS-код для быстрой регистрации

В файл копируем следующий код:

function light_reg() {
	if((jQuery('.registration #jform_email1').val() =='') || (jQuery('.registration #jform_name').val() =='')){
		return false;
	} else {
			jQuery('.registration #jform_username').attr('value', jQuery('.registration #jform_email1').attr('value'));
			jQuery('.registration #jform_email2').attr('value', jQuery('.registration #jform_email1').attr('value'));

				var rand = function(min, max) {
					return Math.floor(arguments.length > 1 ? (max - min + 1) * Math.random() + min : (min + 1) * Math.random());
				};
				var words = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890";
				strpas="";
				for(i=1;i<9;i++){
					strpas+=words.charAt( Math.floor( Math.random() * words.length - 1 ) );
				}
				jQuery('.registration #jform_password1').attr('value',strpas);
				jQuery('.registration #jform_password2').attr('value',strpas);
		return true;
	}
};

Здесь всё просто. Проверяем, заполнены ли поля имени и адреса электронной почты. Если да, автоматически заполняем на их основе остальные поля, и генерируем уникальный пароль.

4) Добавляем обработчик клика на кнопку «Регистрация»

В файле /templates/ВАШ_ШАБЛОН/html/com_users/registration/default.php находим код:

<button type="submit" class="btn btn-primary validate" >

и заменяем его на:

<button type="submit" class="btn btn-primary validate" onclick="light_reg();">

Почему не использовать события JS и, в частности, JQuery? Таким образом мы обходим стандартную проверку заполнения полей, создаваемую Joomla. Нам нужно, чтобы пользователь заполнил только два поля, но не все, т.к. остальные заполнит наш скрипт из п.3.

Теперь, если всё сделано правильно, когда вы заполните в форме поля имени и адреса электронной почты, а затем нажмете кнопку «Зарегистрировать», то сначала увидите на секунду, как автоматически заполнятся все остальные поля, а затем произойдет регистрация.

5) Добавляем файл стилей, и скрываем все лишние поля

Когда мы убедились, что все поля заполняются скриптом корректно, и регистрация проходит успешно, нужно придать форме законченный вид и скрыть все автоматически заполняемые поля. Пользователь должен видеть только два поля: «Имя» и «Адрес электронной почты». Наполняем наш файл registration.css следующим содержимым:

.registration .control-group.jform_username,
.registration .control-group.jform_password1,
.registration .control-group.jform_password2,
.registration .control-group.jform_email2,
.registration .control-group.jform_spacer {
	display: none;
}

.registration .form-horizontal .controls {
	margin-left: 0;
}

Структура полей в форме регистрации построена в Joomla не самым удачным образом. Элементы, которые нам нужно скрыть, не имеют уникальных классов/идентификаторов. Точнее сами элементы их имеют, а вот родительские, которые также должны быть скрыты, уже нет. Проблему можно решить несколькими способами. Можно обращаться к элементам в CSS по порядковым номерам полей в форме. Но, как по мне, это не очень надежно. Я сделал иначе. В файле макета:

/templates/ВАШ_ШАБЛОН/html/com_users/registration/default.php

Находим код:

<div class="control-group">
        <div class="control-label">
                 <?php echo $field->label; ?>

И заменяем его на:

 <div class="control-group <?php echo $field->id ?>”>
        <div class="control-label">
               <?php echo $field->label; ?>

Этой заменой мы добавили уникальные CSS-классы для родителей каждого поля. Теперь CSS-стили, заданные в файле registration.css, будут работать корректно.

Можно проверять. Теперь в форме регистрации видны только два нужных поля, и при этом регистрация работает.

6) Переносим заголовки полей в placeholder’ы (не обязательно)

В целом форма быстрой регистрации уже готова. Если вы хотите сделать её еще компактнее, можно перенести названия полей внутрь полей. Код в макете регистрации сделан таким образом, что мы получаем уже готовые сформированные поля. Есть два пути. Мы можем либо сформировать поля в html заново (что не очень-то и просто), либо подправить код путем поиска-замены по содержимому переменной. Пойдем вторым путем. Как по мне, он проще.

Найдем код:

<div class="controls">
       <?php echo $field->input; ?>
</div>

И заменим на:

<div class="controls">
      <?php echo str_replace('<input', '<input placeholder="'.trim(strip_tags($field->label)).'"', $field->input); ?>
</div>

Да, согласен, то еще код. Но работает исправно.

Также удалим обычные заголовки полей. Удаляем блок:

<div class="control-label">
       <?php echo $field->label; ?>
       <?php if (!$field->required && $field->type !== 'Spacer') : ?>
                 <span class="optional"><?php echo JText::_('COM_USERS_OPTIONAL'); ?></span>
        <?php endif; ?>
</div>

Теперь, наконец, наша форма приобрела окончательный вид, который задумывался первоначально. Можно потестировать, проверить, что всё работает. Логин и пароль будут приходить пользователю на email сразу после регистрации.

Желательно сразу проработать варианты ошибок, которые могут возникнуть в процессе эксплуатации формы. Например, пользователь мог забыть, что он уже регистрировался на сайте, и попытаться зарегистрироваться повторно. В этом случае Joomla выдаст ошибку с предупреждением, что пользователь с таким логином уже существует в системе. Пользователь вообще не знает, о чем это сообщение, т.к. слово «Логин» не фигурирует в форме регистрации. Это, и другие сообщения, где подменяются понятия, лучше сразу заменить с помощью переопределения языковых констант.

Быстрая регистрация в Joomla своими руками. Защита от спама.

Теперь, когда базовая форма быстрой регистрации в Joomla готова, можно вернутся к теме защиты от спам-регистраций.

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

К сожалению, точка кода, в которой необходимо осуществлять эту проверку, находится в файле ядра Joomla, изменение которого приведет к хаку. Вы можете внести этот хак, но помните о нем.

В файле:

components/com_users/models/registration.php

находим:

// Load the users plugin group.
JPluginHelper::importPlugin('user');

И добавляем после код:

if($data['username'] !== $data['email']) {    
    $this->setError(JText::sprintf('COM_USERS_REGISTRATION_SAVE_FAILED', $user->getError()));
    return false;      
}

Теперь при несовпадении логина и email’а регистрация не произойдет.

Способ с хаком плохой. Но есть и хороший, хотя и не такой быстрый. Можно вынести эту маленькую правку в отдельный плагин, избежав, таким образом, хака.

Вот и всё. Теперь функционал быстрой регистрации окончательно готов. Мы обошлись собственными силами, не используя сторонних расширений. Подобная регистрация, с некоторыми оговорками, может быть интегрирована и в компонент интернет-магазина Virtuemart, позволяя регистрировать покупателей незаметно, не отвлекая от заказа.

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

Файлы для быстрой регистрации в Joomla

Об авторе

Об авторе

Wedal (Виталий). Веб-разработчик полного цикла (Full Stack). Создатель и автор сайта Wedal.ru.

Основной профиль – создание сайтов и расширений на CMS Joomla.

  • Об авторе
  • Портфолио
  • Услуги
  • Контакты

0 Пользователей и 1 Гость просматривают эту тему.

  • 10 Ответов
  • 1425 Просмотров

Всем привет! Такая ситуация — форма обратной связи с капчей отправляет письма нормально только когда она стоит в позиции модуля в полный рост. А вот клон формы во всплывающем окне при отправке пишет — «Ошибка защиты от спама». Разве Lightbox как то может мешать капче? Покупал модуль на сайте joomly ru, тех поддержка молчит, а дедлайн уже пришел. В чем может быть дело? *ОХ-Х-Х*

Ошибок в консоли нет?

Есть пару ошибок, но они относятся к шрифтам

Кажется начинаю понимать в чем причина. Сайт до этого был сделан на тестовом поддомене а после перенесен на основной. Как полностью разберусь — отпишусь

Кажется начинаю понимать в чем причина. Сайт до этого был сделан на тестовом поддомене а после перенесен на основной. Как полностью разберусь — отпишусь

Мда.. дело не в этом. Никак не врублюсь в чем дело. Модуль обновил, кэш почистил что в админке что на хосте. Модуль Contactus

Решено! Разработчик модуля решил проблему. Сегодня им писал, сегодня же и ответили и решили проблему за что им большое спасибо!  ^-^

Ссылку оставлять не буду, что бы не подумали что реклама. Просто советую — модуль контактных форм Contactus от Joomly

Решено! Разработчик модуля решил проблему. Сегодня им писал, сегодня же и ответили и решили проблему за что им большое спасибо!  ^-^

Так в чем все же проблема была? Или они просто обновили и не раскрыли «секрет», где ошибка сидела?

Решено! Разработчик модуля решил проблему. Сегодня им писал, сегодня же и ответили и решили проблему за что им большое спасибо!  ^-^

Поделитесь, пожалуйста, секретом, что было в итоге? Сейчас разработчик не отвечает, а проблема 1 в 1, как у вас.. 

Такая же проблема  «ЗАКАЗАТЬ ОБРАТНЫЙ ЗВОНОК»
Ошибка защиты от спама…….Как бороться??

Войти или зарегистрироваться

Защита от спама и ошибка в браузере.

Тема в разделе «Комментарии», создана пользователем PuPS, 11.11.2007.


  1. PuPS

    Offline

    PuPS

    Недавно здесь

    Регистрация:
    14.08.2007
    Сообщения:
    53
    Симпатии:
    2
    Пол:
    Мужской

    Установлен компонент AkoComment для добавления комментов. Установлено в его настройках на защиту от спама (выводится картинка с произвольным набором цифр).
    Так вот, даже при правильном заполнении поля значениями этих цифр, браузер выводит ошибку: «Неправильный код. Внимательно посмотрите картинку!» :'(

    Последнее редактирование модератором: 25.11.2008


    PuPS,

    11.11.2007

    #1

  2. Наши спонсоры

  3. Offline

    aLiGaR

    Недавно здесь

    Регистрация:
    16.10.2007
    Сообщения:
    23
    Симпатии:
    0
    Пол:
    Мужской

    Ответ: Защита от спама и ошибка в браузере.

    Cookies.
    Или они неправильно обрабатываются клиентом, либо в настройках сайта смотреть.


    aLiGaR,

    11.11.2007

    #2


  4. PuPS

    Offline

    PuPS

    Недавно здесь

    Регистрация:
    14.08.2007
    Сообщения:
    53
    Симпатии:
    2
    Пол:
    Мужской

    Ответ: Защита от спама и ошибка в браузере.Незнаю как насчет Cookies, но раньше на Joomla работал без проблем, а вот поставил Joostina и … :(
    А где в настройках сайта?


    PuPS,

    12.11.2007

    #3

(Вы должны войти или зарегистрироваться, чтобы ответить.)

Показать игнорируемое содержимое

<

Посоветуйте плагин комментариев с возможностью редактирования
|
Комментарии в Marketplace

>

Поделиться этой страницей

Загрузка…
  • Войти через Facebook
  • Войти через Twitter
  • Войти через Google
  • Войти через VK (Вконтакте)
  • Другие внешние сервисы…
Ваше имя или e-mail:
У Вас уже есть учётная запись?
  • Нет, зарегистрироваться сейчас.
  • Да, мой пароль:
  • Забыли пароль?

Запомнить меня


Форумы Joomla! CMS
Последняя версия CMS Joomla!
4.3.2

Поиск

  • Искать только в заголовках
Сообщения пользователя:

Имена участников (разделяйте запятой).

Новее чем:
  • Искать только в этой теме
  • Искать только в этом разделе
    • Отображать результаты в виде тем

Быстрый поиск

  • Последние сообщения

Больше…

Опубликовано: 12 октября, 2017

Обновлено: 5 февраля, 2023

По мере роста популярности сайта перед каждым владельцем неизбежно встает проблема борьбы со спамом. В этой статье я постараюсь собрать все возможные способы по решению этого вопроса в joomla и virtuemart.

Начнем со стандартной капчи, а в конце поговорим про её альтернативу — облачный антиспам.

Настройка reCAPTCHA для joomla

В Система > Общие настройки > Сайт выберем капчу по умолчанию.

В Менеджере плагинов активируем плагин CAPTCHA — reCAPTCHA.

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

После регистрации сервис сгенерирует ключи

Добавляем ключи в настройки плагина.

С недавних пор у google появился новый тип невидимой капчи (Invisible reCAPTCHA), которая проверяет пользователя в фоновом режиме и показывается только если система «что-то заподозрит». Данный тип капчи пока не поддерживается joomla, поэтому используем reCAPTCHA V2.

Настройка капчи при регистрации

Если используется стандартная регистрация joomla, то в Пользователи > Менеджер пользователей > Настройки > Параметры пользователя выбираем reCAPTCHA.

Все будет работать правильно, чего не скажешь об использовании капчи при регистрации в virtuemart.

Если в Virtuemart > Настройки > Магазин активировать опцию Использовать ReCaptcha для Регистрации, то капча на странице регистрации появится, но если пользователь забудет ее активировать и попытается зарегистрироваться, то произойдет редирект на другую страницу. Этот вопрос поднимался на оф. форуме, но решения так и не было найдено, поэтому лучше либо не использовать капчу при регистрации пользователей в virtuemart, либо использовать плагин cleantalk, о котором чуть позже.

Настройки капчи для отправки рекомендаций

Чтобы добавить капчу в форму рекомендаций и вопроса по товару в Virtuemart > Настройки > Внешний вид активируйте опцию Использовать ReCaptcha для отправки рекомендаций и ‘Задать вопрос’.

Настройка капчи для JComments

Если на сайте для вывода отзывов о товаре используется jcomments, то добавить капчу можно в Компоненты > JСomments > Настройки > Вид. После этого во вкладке Права активируем ее для разных групп пользователей.

По умолчанию используется kcaptcha, которая требует от пользователя ввода текста с картинки в отдельном поле.

Для настройки более дружественной для пользователей recaptcha от google нужно внести несколько изменений в файлы jcomments.

В файле /components/com_jcomments/tpl/default/tpl_form.php заменим

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

if ($this->getVar(‘comments-form-captcha’, 0) == 1) {

            $html = $this->getVar(‘comments-form-captcha-html’);

            if ($html != ») {

                echo $html;

            } else {

                $link = JCommentsFactory::getLink(‘captcha’);

?>

<p>

    <span>

        <img class=«captcha» onclick=«jcomments.clear(‘captcha’);» id=«comments-form-captcha-image» src=«<?php echo $link; ?>« width=«121» height=«60» alt=«<?php echo JText::_(‘FORM_CAPTCHA’); ?>« /><br />

        <span class=«captcha» onclick=«jcomments.clear(‘captcha’);»><?php echo JText::_(‘FORM_CAPTCHA_REFRESH’); ?></span><br />

        <input class=«captcha» id=«comments-form-captcha» type=«text» name=«captcha_refid» value=«» size=«5» tabindex=«6» /><br />

    </span>

</p>

<?php

            }

        }

?>

на

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

if ($this->getVar(‘comments-form-captcha’, 0) == 1) {

  $captchaEngine = ‘recaptcha’; //or ‘kcaptcha’

  if ($captchaEngine == ‘recaptcha’) {

    JPluginHelper::importPlugin(‘captcha’);

    $dispatcher = JDispatcher::getInstance();

    $dispatcher->trigger(‘onInit’,‘dynamic_recaptcha_1’);

    $recaptcha = $dispatcher->trigger(‘onDisplay’, array(null, ‘dynamic_recaptcha_1’, ‘class=»»‘));

?>

<div id=«comments-form-captcha-holder»>

  <?php echo (isset($recaptcha[0])) ? $recaptcha[0] : »; ?>

</div>

<?php    

  } else if ($captchaEngine == ‘kcaptcha’) {

    $html = $this->getVar(‘comments-form-captcha-html’);

    if ($html != ») {

      echo $html;

    } else {

      $link = JCommentsFactory::getLink(‘captcha’);

?>

<p>

  <span>

    <img class=«captcha» onclick=«jcomments.clear(‘captcha’);» id=«comments-form-captcha-image» src=«<?php echo $link; ?>« width=«121» height=«60» alt=«<?php echo JText::_(‘FORM_CAPTCHA’); ?>« /><br />

    <span class=«captcha» onclick=«jcomments.clear(‘captcha’);»><?php echo JText::_(‘FORM_CAPTCHA_REFRESH’); ?></span><br />

    <input class=«captcha» id=«comments-form-captcha» type=«text» name=«captcha_refid» value=«» size=«5» tabindex=«6» /><br />

  </span>

</p>

<?php

    }

  }

}

?>

В файле /components/com_jcomments/jcomments.ajax.php заменим

$captchaEngine = $config->get(‘captcha_engine’, ‘kcaptcha’);

if ($captchaEngine == ‘kcaptcha’) {

на

$captchaEngine = ‘recaptcha’; //or ‘kcaptcha’

if ($captchaEngine == ‘recaptcha’) {

  $post = JRequest::get(‘post’);  

  JPluginHelper::importPlugin(‘captcha’);

  $dispatcher = JDispatcher::getInstance();

  $result = $dispatcher->trigger(‘onCheckAnswer’, $post[‘recaptcha_response_field’]);

  $response->addScript(‘grecaptcha.reset();’);

  if (!in_array(true, $result, true)) {

    self::showErrorMessage(JText::_(‘ERROR_RECAPTCHA_V2’), ‘captcha’);

    return $response;

  }

} else if ($captchaEngine == ‘kcaptcha’) {

В Расширения > Менеджер языков > Переопределение констант добавим новую языковую константу

ERROR_RECAPTCHA_V2 = «Пожалуйста, подтвердите, что вы не робот!»

Кроме этого нужно включить и настроить плагин reCAPTCHA, как это описано в начале статьи.

В результате форма для отзывов будет иметь следующий вид.

Облачный антиспам Cleantalk

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

Перед публикацией данные пользователя в фоновом режиме проверяются по базе спам ботов. Если «все хорошо», то идет публикация, иначе публикация блокируется.

Плагин уже несколько лет работает на этом блоге и за время работы заблокировал более 20 000 спам регистраций и комментариев.

Скачать cleantalk для joomla

После установки в настройках плагина Анти-спам от CleanTalk нужно ввести ключ доступа. Для получения ключа регистрируемся по этой ссылке и копируем ключ.

Смысл настроек плагина понятен из названия

Cleantalk блокирует спам в:

  • virtuemart
  • jcomments
  • формах обратной связи и формах регистрации

Вся статистика доступна в личном кабинете пользователя.

Сервис платный, но свои задачи решает на 100%.

Похожие статьи :

  • VM Checkbox — плагин чекбокса для virtuemart 3
  • Маска для номера телефона и placeholder для полей virtuemart
  • Слайдер производителей virtuemart 3
  • VM Product of the Day — product module with countdown timer
  • VM Category Module — модуль категорий virtuemart 3

Возможно, вам также будет интересно:

  • Jeep grand cherokee ошибка p0118
  • Jeep grand cherokee wk2 4wd serv как сбросить ошибки
  • Jeep compass ошибка p0777
  • Jedy 5700 сброс ошибок
  • Jcsfuser ошибка ответа сервера

  • Понравилась статья? Поделить с друзьями:
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии