1. PHP / Говнокод #3380

    +166

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    <?php
    session_start();
    // супер-мега защита от ддоса
    $_SESSION['antiddos']==time() ? exit() : $_SESSION['antiddos']=time();
    //конец супер мега защиты
    ....
    ?>

    Найдено в старом проекте, код не мой.
    Но вы знаете, от толпы школьников с кнопками F5 это реально помогает!

    Запостил: mr.The, 02 Июня 2010

    Комментарии (21) RSS

    • показать все, что скрытоЕсли Ваш сайт падает от толпы вебкиллов с F5 -- скорее всего он написан на php, ага)
      Ответить
    • Как этот код поможет от толпы троллоты с F5?
      Во-первых, он защищает только от более одного количества обращений к серверу в секунду.
      Во-вторых, для каждого пользователя будет свой $_SESSION['antiddos']. Т.е. от толпы уж точно не поможет.
      Ответить
      • специально обученный школьник не сможет жмахать F5 ,чаще, чем раз в микросек
        Ответить
        • Достаточно уснуть на клаве. Как было где-то на башорге.
          Ответить
          • автор борется против толп засыпающих школьников?
            Ответить
    • Да че вы напали - вполне так норм код, не более 1 запроса в секунду от типа.
      Если что я знаю про пеханизм back-cookie и защищенные сервера, но и это вполне так - может быть даже когда-нибудь и пригодится как идея.
      PS На счет старта сессии думаю мне не нужно говорить о том что даже если куки у человека выключена то сессионая кука все равно ставится, но даже если бот грамотный и отвергает и их то это возможно это нормально обойти при помощи нехитрого механизма индентификации по нескольким параметрам.
      Ответить
      • > если куки у человека выключена то сессионая кука все равно ставится
        Это щито? Последняя разработка Моссада?
        Ответить
      • Имхо, лучше, надежней и эффективней антидос настраивать хотя бы на HTTP-серверах, не говоря уже о "железной" защите. Тот же Apache. Хотя сейчас многие адекватные веб разработчики юзают Apache как CGI среду, а ngnix - как HTTP сервер с суперским кэшированием и лучшей защитой от DDoS
        Ответить
        • Адекватные используют nginx+php-fpm, кому нужен апач?
          Ответить
      • >вполне так норм код
        >может быть даже когда-нибудь и пригодится как идея
        Таки прозреваю тысячи говнокодеров, копипастящих это...
        "У миня не работаеть, выскакивает ощибка!!!!", anyone?
        Ответить
    • to turdman: А вы проверьте, большинство браузеров (ФФ в том числе) все равно ставит куки, хотя это поведение можно настороить в about:config

      to Amok: Спору нет, но я и не говорил что метод красив, просто человек который это написал вполне в своем уме, и говном я бы это называть не стал :-)

      to bugmenot: Я даже не понял смысл вашей фразы чесно говоря, видать ваши мысле шли вперед печатающих пальцев ) но вроде этот код вполне рабочий, хотя от реального доса конешно не защитит нужно как минимум другой метод индентификации сделать :-)
      Ответить
      • >большинство браузеров (ФФ в том числе)
        2-3 сильно протвиканных инсталляции firesux так делают и больше никто

        >вроде этот код вполне рабочий
        "я печатаю 800 слов в минуту. правда такая хуйня получается" старый анекдот отражает суть этой защиты
        Ответить
      • На ум приходят два момента, когда это даст сбой.
        1. При загрузке в какой-то момент идет ajax-запрос, а так как инет, если быстрый, он проигнорируется.
        2. Я люблю открывать несколько страниц (новости, напримр) в новых вкладках. Поэтому часть из них откроется, а часть нет.
        Ответить
    • Как бы нормальный код, только нет проверки на то, если человек заходит без куков
      Ответить
      • хм. а как же это проверить?
        Ответить
        • внезапно...
          If(!isset($_SESSION['antiddos']))
          {
          зашел без куков
          }
          Ответить
          • а, спасибо
            туплю
            Ответить
          • Хотя нет, не туплю. Сессия то будет существовать. и antiddos будет существовать. Куки используются лишь для того, чтобы потом подхватить именно эту сессию, а не другую. Так что ваша проверка ничего не говорит о том, отключены куки или нет.
            Ответить
            • а тут уже я туплю))
              что-то вроде
              If(!isset($_COOKIE['PHPSESSID']))
              {
              зашел без куков
              }
              Ответить
    • header('HTTP/1.1 555 I see what you did there.', true);
      Ответить
    • От ddos должен защищать не движок, а сервер. Тупиковый ход изначально.
      Ответить

    Добавить комментарий