Есть кое-что, чего я не понимаю. В одном из моих веб-приложений есть небольшая форма, в которой вы можете ввести свое имя и адрес электронной почты, чтобы «подписаться» на список пользователей сайта, который я поддерживаю. Посещаемость сайта очень низкая, и он полезен только очень небольшому количеству людей, живущих в очень маленьком городке ... никому он не будет интересен.
Тем не менее, каждый день, иногда много раз в день, кто-то (или бот) вводит вымышленные имена и, возможно, фиктивные адреса электронной почты в форму.
Эта форма больше даже не активна на моем сайте, просто она все еще существует как осиротевшая страница в моем каталоге IIS (что говорит мне, что кто-то ищет эти типы форм через Google, потому что нет пути к этой форме, если вы заходите через страницу по умолчанию.
Для меня это не большая проблема, я могу решить проблему с помощью капчи, но чего я не понимаю, так это с какой целью кто-то может настроить бота для многократного заполнения форм? Я полагаю, что должна быть причина, но хоть убей не знаю почему?
Что мне не хватает?
Это боты, которые пытаются рассылать вам спам или, что еще хуже, пытаются использовать вашу контактную форму для рассылки спама другим.
Например, есть несколько известных эксплойтов для PHP. mail()
Команда, обычно используемая контактными формами, может привести к тому, что адрес TO, который вы вводите в код, будет перезаписан данными POSTed, если вы не будете осторожны, как вы обрабатываете данные, поступающие из вашей формы.
Некоторые способы предотвратить это:
Используйте капчу. Для сайта с низким трафиком даже статическая капча (изображение, которое каждый раз содержит один и тот же текст) будет работать очень хорошо.
Проверьте HTTP referrer
чтобы убедиться, что POST приходит из вашей контактной формы. Однако многие боты будут подделывать это, так что это не очень полезно.
Используйте скрытые поля формы, чтобы попытаться обмануть ботов. Например, создайте поле с именем phone_number
в форме и скройте его с помощью CSS в таблице стилей (display: none). Бот обычно заполняет это поле (обычно они заполняют все поля, чтобы избежать возможных ошибок проверки обязательного поля), но пользователь этого не делает, поскольку оно скрыто. Таким образом, при POST вы проверяете значение в этом поле и НЕИСПРАВНО не можете отправить сообщение, если в нем есть значение. Я считаю, что один только этот метод очень эффективен.
Эти боты слепо пробуют каждую найденную форму для рассылки спама. Некоторые из них могут иметь исторические данные о формах, и даже если они в настоящее время не указаны в поисковых системах, эти боты могут публиковать данные по этому URL-адресу.
Скажем, веб-сайт содержит HTML-форму для отправки рекомендации другу, обычно «Расскажи жареному» или «Отправить поздравительную открытку», которая, например, не защищена изображением CAPTCHA. Бот может использовать эту форму для отправки тысяч спам-писем с помощью вашего SMTP-сервера.
Если бот исходит с того же IP-адреса, вы можете заблокировать этот адрес в IIS или на своем брандмауэре.
Если они каким-то образом могут проникнуть на ваш сервер и внедрить на него программное обеспечение без вашего ведома, это еще один спам-бот для них.
Регистрация - это еще один шаг к получению возможности взять на себя управление сервером, поскольку вы можете видеть немного больше файлов на сервере.
Кроме того, если форма не защищена от XSS и других подобных действий, взломать ее будет еще проще.
Обычно они пытаются подделать пользовательские команды HTML / PHP / ASP, когда нажимают кнопку отправки, это используется как бэкдор для троянов и т. Д.
Спам в комментариях это одна причина. Они пытаются добавить много ссылок в комментарии блога, например, чтобы повысить рейтинг своей страницы.
Некоторые из них просто, кажется, просто заполнить любую форму, они видят ссылки на порно-сайты в надежде, что где-то, как-то ссылки в виде появится на вашем сайте и быть подобран Google.
Мне очень повезло с блокировкой ботов с помощью некоторых пользовательских правил mod_Security.