Я посмотрел пример, связанный с опубликованной вами статьей. На первый взгляд кажется, что это легко обойти.
Флажок captcha работает на основе того, что спам-боты не анализируют или используют код JavaScript, встроенный в веб-страницы. Из-за этого они не найдут элемент флажка captcha внутри формы, в которой он ищет, и поэтому не будут отправлять значение сообщения для флажка вместе с формой, а на стороне сервера вы отклоните форму, если значение флажка не было отправлено.
Проблема с этим:
- Имя флажка всегда одинаково (
gasp_checkbox
)
- Бот легко может быть "обучен" распознавать этот javascript на вашей странице и действовать соответственно
- Даже если вы выводите случайное имя и значение, которое должно использоваться для флажка, оно все равно может быть обнаружено
Исход из этих 3-х проблем означает, что это гораздо легче сломать, чем капчи изображения или другие методы. Все, что бот должен сделать при отправке вашей формы, это добавить: gasp_checkbox=on
к своему HTTP-запросу.
Тем не менее, если вы реализуете это для себя на своем собственном сайте, маловероятно, что какие-либо боты смогут обойти это, потому что его использование не широко распространено.
Вы можете сделать его более безопасным, выполнив следующие действия:
- Создать уникальные пары имя / значение для флажка на стороне сервера и вывести эти значения в обфусцированном javascript на клиент
- Служите сценарию отдельно от формы, желательно во внешнем файле JavaScript, который создается сценарием.
- Убедитесь, что значения, отправленные для флажка, соответствуют паре, которая была ранее сгенерирована и не использовалась ранее.
Если вы сделаете эти вещи, я думаю, у вас может быть эффективный флажок. Если кто-то поймает его на вашем сайте, победить может быть тривиально, даже с учетом вышеупомянутых мер безопасности, но это может занять некоторое время и все еще эффективно для вас.