Идея для хорошего антиспама (теория)
Наверное, каждый сталкивался со спамом на своем сайте – в комментариях, в формах обратной связи. Когда речь идет о спаме людьми, то тут не помогут никакие капчи, и решением проблемы будет различного рода блокировка доступа к вашему ресурсу для таких лиц.
Что касается ботов – тут все весьма интересно. Принцип работы у них следующий: они заходят на сайт, находят на нем все возможные формы, заполняют в них поля (типы полей чаще всего легко определить, например, поле с name="email" требует ввода e-mail адреса) по шаблону и отправляют спам-сообщение.
Как же исключить рассылки спама ботами? На ум приходит весьма интересная идея: поскольку боты находят в форме поля и пытаются заполнить их по шаблону своими данными, то необходимо сделать любое скрытое поле, которое очень похоже на реальное.
Почему скрытое, и зачем оно нужно? А для того, чтобы сделать проверку этого поля. Если оно заполнено (а заполнить его могут только боты, так как скрытое поле не видно людям), то выдаем ошибку и не отправляем письмо.
Для примера, поле может выглядеть так:
<div style="display: none">
<input type="text" name="nickname" class="input" value="" />
</div>
Важно, чтобы тип поля был не hidden – такие поля боты не заполняют. Например, на PHP получаете значение этого поля, и если оно отлично от пустоты (значит, отправитель – бот), и запрещаете отправку формы.
Эта статья несет чисто теоретические примеры решения проблемы, в следующих уроках я покажу, как это можно сделать практически для различных CMS.