Защита от спама/сокращение - Контактная форма?
Я хочу добавить простую форму контакта на свой веб-сайт, чтобы клиенты могли легко связаться со мной.
<form>
NAME
<input type='text' name='name' />
EMAIL
<input type='text' name='email' />
MESSAGE
<textarea name='message' />
<input type='submit' />
</form>
Эта форма просто напишет мне сообщение клиентов.
Но я также хочу уменьшить (не, я не говорю об исключении, но, по крайней мере, уменьшении), SPAM.
Я изучил использование CAPTCHA, но, в конечном счете, я не хочу препятствовать клиенту заполнять дополнительную информацию.
Любые идеи хорошего простого метода предотвращения/сокращения спама, которые я мог бы использовать для моей контактной формы.
Ответы
Ответ 1
Очень простой трюк, который я использовал с удивительно хорошим успехом, заключается в следующем: Предоставьте текстовое поле, которое скрыто от пользователей с помощью style="display: none"
, но с заманчивым именем, например email
. Большинство ботов будут заполнять что-то в этой области, но люди не могут видеть это так, как обычно. На сервере просто убедитесь, что поле пустое, иначе обработайте его как спам.
Ответ 2
Единственный (клиентский) способ, отличный от подтверждения пользователя типа CAPTCHA, - это написать все это динамически. Многие (но не все) роботы, вероятно, игнорируют динамический контент. Например,
document.write("<"+"form>"
+" NAME "
+" <"+"input type='text' name='name' /> "
+"EMAIL "
+"<"+"input type='text' name='email' /> "
+"MESSAGE "
+"<"+"textarea name='message' /> "
+"<"+"input type='submit' /> "
+"<\/form> ");
Ответ 3
Используйте почтовую учетную запись Google или Yahoo. У них хорошие фильтры для защиты от спама.
Ответ 4
Если вы хотите сделать полностью входное решение, у меня был успех недавно, оставив атрибут действия формы пустым и заполнив его с помощью функции $(document).ready. Большинство спам-ботов используют браузер с отключенным javascript или ищут скрытые поля, чтобы избежать обнаружения.
Пример:
Ваш html будет:
<form method="POST" action="" id="contact-form">
и в любом месте этой страницы вы можете использовать это, чтобы заполнить его.
<script>
$(document).ready(function(){
$("#contact-form").attr("action", "/yourMailScript.cgi");
});
</script>
Бот-браузер без javascript не получит действие формы, и он получит 404 при представлении. Любой, у кого нормальный браузер (если у них нет JS, отключенного по параноидальным причинам), получит нормальное поведение.
Ответ 5
grep для методов URI, символов с urlencoded или двух символов разметки HTML, похоже, работает.
Ответ 6
Использовать технологию JS. Например, если пользователь приходит на вашу контактную страницу, тогда javascript будет генерировать строку или что-то подобное, что вы предпочитаете, и помещать информацию в скрытое текстовое поле. Но это не настоящее решение, умный бот может легко взломать его.
Еще один способ: вы также можете использовать проверку электронной почты после отправки контактной формы. И сохраните данные в своей базе данных. Если клиент проверяет URL по электронной почте, контактная информация будет отправлена вам по почте из базы данных.
А также используйте задержку, чтобы предотвратить непрерывную атаку робота. Как sleep()
в PHP-коде. Это добавит немного задержки в ваш код. Таким образом, вы можете уменьшить случайные атаки, но это не метод предотвращения.
Ответ 7
Я нашел хорошую идею на этой странице:
http://www.evengrounds.com/developers/alternatives-to-captcha
Вы можете сделать кнопку SUBMIT на странице подтверждения , на которой вы объясните пользователю, что он должен нажать кнопку CONFIRM, чтобы отправить сообщение. Спамботы обычно подают только первую форму и пропускают второй шаг.
Ответ 8
Вы можете добавить простой вопрос, каждый серьезный человек, который хочет связаться с вами, может легко ответить. Например, поле, в котором он должен ввести первую букву домена. Большинство ботов не понимают вопроса и не введут ничего или что-то случайное.
Вы также можете попытаться отслеживать время, необходимое пользователю для ввода данных. Если он пытается отправить форму раньше 5 секунд, прежде чем вводить первое слово, просто не разрешайте его отправлять. Боты обычно просто разбирают сайт, заполняют все, а затем публикуют его и переходят на следующий веб-сайт.
Ответ 9
Используйте антиспамовый API, такой как Akismet или Cleantalk. Вы можете использовать традиционные проверки для менее сложных ботов, прежде чем использовать API. Анти-спам-API - единственный способ поймать спам, представленный человеком.
Ответ 10
Вы можете просто зарегистрировать IP ($ _SERVER ['REMOTE_ADDR']) и запретить повторную валидацию с помощью этого IP-адреса в течение 1 минуты или, более точно, начать сеанс, указать идентификатор без вашего посетителя и запретить повторную проверку для 1 минута (или больше, но бот не любит ждать).
Ответ 11
Вам не нужно уменьшать спам, потому что сообщения не публикуются на веб-сайте. Большое количество спама размещено на форумах и блогах, потому что это достигнет большой аудитории зрителей и ботов.
Для частной контактной формы спам неэффективен, поэтому вам не придется беспокоиться о больших количествах. Несколько спам-сообщений, которые вы получите, могут быть эффективно отфильтрованы с помощью фильтра спама в вашем почтовом ящике (например, с помощью gmail или yahoo), тем более, что входящие сообщения являются простым текстом без изображений.