Защита от спама для небольших сайтов

    Последнее время на харбе появилось несколько постов про защиту сайтов от спам ботов. Я решил присоединиться и описать метод, которым пользуюсь сам. Пользуюсь им уже достаточно давно и скорей всего многим он будет известен, но я думаю найдутся те кому будет интересно.

    Основная задача.
    Сделать так, что бы каждый мимо проходящий бот не спамил через форму на сайте. Сделать заполнение формы для пользователя как можно проще (избавиться от каптчи).

    Суть.
    Выводим поочередно поля. При этом все нечетные полня (1, 3, 5...) делаем скрытыми. В случае если заполнены скрытые поля считаем, что отправленные данные спам. Дополнительно я называю поля, которые не должны быть заполнены как name, email…

    Реализация.

    <form>
     <div>Name:<br><input type="text" name="asdasd"></div>
     <div>Sfdd:<br><input type="text" name="name"></div>
     <div>Email:<br><input type="text" name="xcbxcb"></div>
     <div>asfaf:<br><input type="text" name="email"></div>
     <input type="submit" value="Send">
    </form>

    <script>
     $('div').filter(':odd').hide();
    </script>


    * This source code was highlighted with Source Code Highlighter.



    Достоинства.
    1. Решает поставленную задачу
    2. Легкая реализация

    Недостатки.
    1. С отключенным CSS пользователь заполнит поля
    2. В моей реализации с отключенным JS пользователь заполнит поля
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 20

      0
      Можно сделать одно скрытое поле, в которое нужно будет ввести текст с капчи, если отключен CSS и JS. А имя поля рандомное с хранением на сервере.
      Но как-то больно сложно получается %-/
        +2
        Если можно использовать скрипты, то проще сделать так:

        <form action="for_spam">
        <input type="submit" disable="disable"/>
        </form>
        <script type="text/javascript">
        $(function() {
            $("form").attr("action", "path_to_script").find("input:submit").attr("disable", false);
        });
        </script>
        

        Суть этого метода заключается в том, что отправляем роботов на левый адрес, куда они могут слать свой спам хоть до посинения. Такой подход не требует модификации серверного скрипта, надо лишь изменить имя файла, чтобы прежние спам роботы не стучались туда.
        Из минусов — отключенный JS не даст пользователю отправить сообщение, но об этом можно сказать в <noscript>
          0
          Многие боты уже давно используют браузер и JS, поэтому такие методы не эффективны…
            0
            На моём небольшом сайте пока таких ботов не встретил. А обычные ломятся постоянно, по логам видно обращение к /for_spam
              0
              Вам везет… Я уже сталкивался с навороченными…
          +4
          Лучше напротив незаполняемых полей так и написать: «Оставьте это поле пустым»
            0
            Представь форму обратной связи на любом сайте. И теперь представь что там еще есть 2-3 поля с надписями «Оставьте это поле пустым». И вот что это будет за порнография? :)
              0
              Так и без этой надписи инпуты без разъяснений, если отключить js, тоже будет странно смотреться :)
              Еще у вас в верстке лейблы отсутсвуют.
                0
                или оставить абракадабру в четных инпутах, но тогда надо ошибку выдавать, что-то вроде: «Вы заполнили поля, предназначенные для спам-ботов».
                  0
                  Что-то я более к приземленным методам склоняюсь, хочеться облегчить жизнь себе и людям, а не усложнять, на мой взгляд, форму дополнительными полями :) Хотя здесь дело наверно вкуса, кто как хочет, так и… защищается от спама :)
                    0
                    Я хочу сказать, что надо предусмотреть вариант, когда js не сработает.
                    У меня вчера такая ситуация произошла, интернет еще не настроен, поэтому во время загрузки сайта произошел дисконнект. И все стили и java script закешировались, даже недогрузившиеся.
                    В результате сайт выглядел и функционировал на первый взгляд нормально, но некоторые функции отвалились.
            0
            Да вроде боты уже вполне соображают, что видимое и заполняется, а что нет и трогать не нужно.
              0
              Да вроде слоны уже вполне летают… У вас своё мнение есть, проверить ваше «вроде» не пробовали? И зря.

              У нашего клиента была проблема: через форму обратной связи сыпались тонны спама. Мы решили её очень просто ввели скрытое (display: none) поле, в комменте которого было ещё и написано, что даже если вы его видите, то не заполняйте. За полгода ни одного спама! И где ваше вроде?
                0
                +1 такие боты даже если есть, то их единицы и они крайне неэффективны… а об этом методе на хабре уже писалось и в комментах к вчерашнему посту тоже ;)

                а вот про метода с разницей во времени пишут очень мало, а зря :(
                  0
                  Да мы его с Хабры и взяли как раз (http://habrahabr.ru/blogs/webdev/50328/), статье то полгода, как раз когда мы сайт сдавали. Хорошо помню, что ещё радовались, что статья подвернулась. Метод выбрали как самый простой, быстровоспроизводимый, а на практике оказалось ещё и очень действенный!
              0
              Еще уместно сказать, что левые названия полей ломают автозаполнение в браузерах. Молодец!
                0
                на самом деле 2 недостаток таковым не является, т.к. только очень тупой пользователь заполнит поля с такими заголовками :) скорее здесь есть проблема в юзабилити, т.к. пользователь при виде таких полей просто повиснет на 3-4 секунды, после чего охренеет и не станет отправлять форму :)
                  0
                  а вы надеетесь, что авторы спам-ботов не читают хабр?
                    0
                    честно говоря не уверен так как не системщик, но мне кажется что бот, который будет полноценно парсить страницу, строить DOM, выполнять JS и VB да ещё и выполнять свои функции будет жрать нехилые аппаратные ресурсы и для адекватной скорости работы ему потребуется свой дата-центр :) ведь даже google-боты нихрена подобного не делают ;)
                    0
                    Защита от спама все-таки комплекс мероприятий.
                    Делал вот как:
                    0. action у формы подставляется js.
                    1. Скрытое поле. с названием email. (почему то любят они такое название)
                    2. Если какой-то кривой UserAgent, то добавить каптчу.
                    3. Если данные пришли без каптчи и со скрытым полем, то — бот.
                    4. Если данные пришли с каптчей и скрытым полем, то — бот.
                    5. Все остальное нормальные письма.

                    Минусы:
                    Изменение скриптов серверных.
                    Каптча показывается некоторым пользователям
                    От специально для сайта написанного бота не помогает. точнее помогает, но не надолго.
                    Плюсы:
                    Все мелкие мимо проходящие боты отсекаются.
                    Если шрифт менять, то каптча для бота помеха.

                    Only users with full accounts can post comments. Log in, please.