Защищать веб-форму от спама без PHP? - PullRequest
4 голосов
/ 19 ноября 2011

Я должен реализовать какую-либо защиту от спама (капчу и т. Д.) Для существующей формы веб-контакта. Однако исходная форма использует файл .cgi на виртуальном сервере, к которому я не могу получить доступ, поэтому я не могу работать с этим сценарием. Почтовая функция PHP отключена выключена .

Полагаю, мне нужен мой собственный файл cgi, но я не очень люблю perl и cgi: -)

Может быть, вы можете указать мне какое-то решение этой проблемы.

Ответы [ 2 ]

4 голосов
/ 19 ноября 2011

Вы можете добавить отрицательную капчу:

Отрицательная капча имеет ту же цель, что и обычная капча изображения: чтобы боты не отправляли формы. Имиджевые («положительные») капчи делают это, выполняя шаг, который могут сделать только люди, но боты не могут: читать перемешанные символы из изображения. Но это плохо. Это создает проблемы с юзабилити, ухудшает показатели конверсии и сбивает с толку многих людей. Почему бы не сделать это наоборот? Отрицательные капчи создают форму, в которой есть задачи, которые могут выполнять только боты, а люди - нет. Это имеет точно такой же эффект, с (анекдотически) гораздо более низким уровнем ложноположительной идентификации по сравнению с положительными капчами. Все это происходит, не заставляя людей проходить лишние хлопоты, чтобы отправить форму. Это действительно беспроигрышный. [источник] .

В вашем случае вам лучше всего использовать Honeypot: добавьте новое поле:

<div style="position: absolute; left: -2000px;"><input type="text" name="surname"  value="" /></div>

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

Теперь в вашем CGI-скрипте просто отфильтруйте "фамилию"; если установлено, остановите обработку и выдайте ошибку, или просто оставьте это при этом.

Или, если это невозможно, попробуйте отфильтровать результаты опубликованных форм по «если в записи не установлена ​​фамилия». Скажем, если вы получите результаты в Excel / CSV: просто используйте Excel, чтобы отфильтровать элементы с фамилией. Или используйте ваши почтовые фильтры, чтобы переместить любую почту, для которой фамилия: .... имеет значение, в специальный каталог.

4 голосов
/ 19 ноября 2011

Вы можете создать своего рода антибота, если предположите, что все ваши пользователи включили JavaScript.

Установите формы action на страницу 404, а в javascript измените ее на соответствующую action страницаПример:

<form action="nowhere_ahaha" id="myform">
   ...
</form>
<script>
document.getElementById('myform').action = '/form_action.cgi';
</script>

Все это работает, потому что боты обычно не запускают js, а люди-посетители делают.

...