Не так давно, с неделю как, мне пришла идея о защите от спама блога wordpress. О защите от спама уже говорено-наговорено, но своего метода я еще не видел и про него не слышал.

Идея проста: банально не показывать спам-боту форму отправки комментария.

Реализация:

  1. Форма подгружается через AJAX, например через onload тега <body> (возможно другие варианты)
  2. Имена всех элементов формы генярятся случайным образом, вида «4jlfd8hewrkvf8df7″ и каждый раз разные ,чтобы бот не спамил напрямую через скрипт

Достоинства:

  • не нужно использовать каптчу, что удобно для посетителей
  • по логике пробить такую защиту бот не сможет
  • идея применима не только для WordPress-a

Недостатки:

  • возможная несовместимость с существующими плагинами, например «древовидные комментарии»
  • AJAX требует включенного Javascript

Что скажете? Я погуглил-пояндексил — похожего не нашел. Если есть — дайте ссылку, буду благодарен за своё сэкономленное время ;)

21 Комментариев на “Анти-спам защита WordPress”

  1. Rayan сказал:

    > Имена всех элементов формы генярятся случайным образом

    запоминать пользователя не будет возможности. он должен будет постоянно вводить имя, сайт, мыло

    уж проще ввести капчу.

    и как будут определяться поля таблицы в базе куда пихать комментарии?

  2. Vacuum сказал:

    >и как будут определяться поля таблицы в базе куда пихать комментарии?

    просто запоминать в сессии какое поле что значит

    >запоминать пользователя не будет возможности. он должен будет постоянно вводить имя, сайт, мыло

    тоже просто решается сессией - сохраняется после ввода и подставляется в загружаемую AJAX форму

    > уж проще ввести капчу

    каптчу и пробить проще

  3. woffka сказал:

    зачем так выделываться, если просто можна сделать onsubmit=false
    и отправлять форму через аякс с использованием prototype - form.serialize

    но лучше когда там аякса не будет вобще

  4. SergeyL сказал:

    Как по мне, то факт того что форма подгружается ajax скриптом никак не влияет на возможность прочитать её скриптом. Тот же httpunit прекрасно выполняет javascript и после подгрузки формы сможет её прочитать.

  5. Rayan сказал:

    кстати, у меня на блогах капчу не пробивает никто, так что можно не заморачиваться :)

  6. Vacuum сказал:

    2Woffka: В том то и идея - что бы бот не знал что на странице есть форма вообще и не знал что ему дальше делать

    2SergeyL: Можно сделать так, чтобы бот просто не знал что ему нужно вызвать, чтобы получить форму

    Ко всем: ребята, я понимаю что проще всего - забычить чужую идею. Каждый может сказать: "да это фигня".
    Неправильно мыслите. Если можно выполнять яваскрипт - почему бы не подумать как это обойти и предложить идею? Просто чтобы размять мозги.

  7. CTAH сказал:

    Вова, правильно мыслишь. Можно вообще обойтись без формы, она не нужна. Но если нужно загрузить файл, то без формы конечно же никак.
    Поэтому если форма без аплоада файла, то можно сформировать ПОСТ запрос яваскриптом и отослать его используя AJAX (сгенерить пост-запрос это легко). При этом не нужно спец. имен полей и т.д. Думаю того что я описал должно быть достаточно

  8. Влад сказал:

    Петрович, пробить твой метод можно за пять минут. Другая сторона медали в том что заниматься конкретно твоим сайтом врядли кто будет, поэтому тебе проще переименовать поля и не пудрить себе мозги.

  9. Влад сказал:

    хотя без базару яваскриптом ты очень сильно усложнишь боту задачу.

  10. Влад сказал:

    кому интерестно - одна из самых удачных анти-бот реализаций у майкрософта :) на хотмейле при регистрации ящика. ихнюю капчу расшифровать пока что сумел только один человек.

  11. Виталий Бондарь сказал:

    >ихнюю капчу расшифровать пока что сумел только
    >один человек.

    Покажите мне этого человека. Хочу с ним пообщаться :)

  12. Влад сказал:

    Лично я его не знаю, мне давали потестить скрипт (на удалённом сервере) которому POSTом заливаешь картинку он отвечает распознанным текстом.

  13. Виталий Бондарь сказал:

    Может это было популярное нынче использование посетителей порносайтов в качестве распознающего элемента?

    Если нет, то тогда все же очень интересно как это было сделано.

  14. Руслан Пилин сказал:

    На самом деле любая капча, кроме гугловской распознается с вероятностью 0.8, гугловская с вероятностью 0.2. В любом случае вещь почти бесполезная. Жаль нет под рукой соответствующих ссылок. Но гугль вам поможет найти эти исследования.

  15. Rayan сказал:

    0.8 это 80% чтоли?

  16. Влад сказал:

    кароч говорить можно что угодно, другое дело - действительно это реализовать ;)

  17. Руслан Пилин сказал:

    Да, Раян... Капчи ломаются со страшной силой, теми кто знает как их ломать. И если твою капчу экономически целесообразно ломать, ее взломают. У нас даже была идея написать плагин для фф, который будет искать на страничке стандартную капчу, распознавать ее и вставлять значение в поле. Такое себе облегчение жизни пользователей.

    Кстати, случайно наткнулся на элегантное решение проблемы спам ботов http://www.rustylime.com/show_article.php?id=338 .

    Капча - это серьозная муда для юзера. И он обычно решит, что ничего писать не стоит и что лучше вообще на этот сайт не ходить. )

  18. Влад сказал:

    та капча что тут на сайте самая элементарная, за пол часа пишется распознователь. говорю, потому что сам писал когдато давно распозновалку для капчей на сайтах киевстар/юмс, чтоб смс-ки слать простым перл скриптом. капча там была подобная этой. никаких нейросетей не нужно :)

  19. Виталий Бондарь сказал:

    Солидарен с Владом, тут капча очень простая.
    Не знаю как там перлом, но нейросеткой такая распознается с вероятностью 1 :)

    А вот по поводу капчи вообще, то тут Руслан явно витает в облаках. Капчи и Гугла и Майкрософта, как и многие другие, взламываются далеко не просто.

  20. Виктор сказал:

    Капча удобна, если в ней нет тригонометрических уравнений :)

  21. smail2133 сказал:

    хмм, на первый взгляд идея отличная, но как обдумать то не очень, и что будет стоить переписать спам-бот ?? т.е. Можно запарсить html и однаково заполнять форму автоматом. Что сделано человеком можно взломать. Идеальной защиты не существует.





Оставьте свое мнение