За последние 24 часа нас посетили 17553 программиста и 1723 робота. Сейчас ищут 1460 программистов ...

Защита от DDOS POST спама

Тема в разделе "PHP для профи", создана пользователем Fox-, 19 янв 2023.

  1. Fox-

    Fox- Активный пользователь

    С нами с:
    11 янв 2018
    Сообщения:
    94
    Симпатии:
    3
    Здравствуйте, у меня https, но это не имеет значения наверное, под cloudflare сервер. Вопрос: могут ли посмотрев в браузере какой POST запрос отправляется, создать ботов, которые будут отправлять эти пост запросы в большом количестве и cloudflare их пропустит ? Или всё таки он заблокирует их?
    Если не заблокирует, то можно ли POST форму защитить чекбоксом следующим способом:

    Код (Text):
    1.  
    2.      <form action="checkbox-form.php" method="post">
    3.      Do you need wheelchair access?
    4.      <input type="checkbox" name="formWheelchair" value="Yes" />
    5.      <input type="submit" name="formSubmit" value="Submit" />
    6.       </form>
    7.  
    8.      if(isset($_POST['formWheelchair']) &&
    9.      $_POST['formWheelchair'] == 'Yes')
    10.      {
    11.      echo"Need wheelchair access.";
    12.       }
    13.        else
    14.      {
    15.      echo"Do not Need wheelchair access.";
    16.       }
    В браузере перехватил POST с чекбоксом, вроде нажатие чекбокса не передается через POST или я плохо искал

    Есть стопроцентный вариант с числовой капчей, но на юзабилити это плохо отразиться.
    Подойдет ли мой пример кода для защиты от ботов? {при регистрации}
    Если есть варианты поделитесь.
     
    #1 Fox-, 19 янв 2023
    Последнее редактирование: 19 янв 2023
  2. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    922
    Симпатии:
    143
    Капча при регистрации -- вполне стандартная практика.
     
  3. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.858
    Симпатии:
    748
    Адрес:
    Татарстан
    что за бред.... если отмечен - передается, не отмечен - не передается ... бот сможет передавать если надо или непередавать если не надо

    есть небольшой хак - использование полей, скрытых от пользователя - например через style="display: none"
    пользователь не может его увидеть и никогда не заполнит, в отличие от глупого бота - который видит поле - считает своим долгом его заполнить и передать - тогда если пришло в этом поле что-то - 100% бот

    но все не панацея... если к написанию бота подойдет человек - который все проверит и сделает сначала ручками - ничего не сделать.
     
    don.bidon нравится это.
  4. mepihindeveloper

    mepihindeveloper Активный пользователь

    С нами с:
    20 ноя 2018
    Сообщения:
    12
    Симпатии:
    1
    От ботов можно еще защититься CSRF токеном, если бот не имитирует человека. Можно также воспользоваться библиотекой mekras/botobor, которая работает по принципу "заставить роботов выдать себя".
    --- Добавлено ---
    Это, конечно, классика, но крайне не удобно для пользователя: мы заставляем пользователя выполнять ненужные ему и не всегда простые действия. Использование метода "выдавать бота" от Нед Батчелдер куда интереснее.
     
  5. Fox-

    Fox- Активный пользователь

    С нами с:
    11 янв 2018
    Сообщения:
    94
    Симпатии:
    3
    плохо...
    --- Добавлено ---
    а как тогда работает recapcha чекбокс Я не робот?
     
  6. Fox-

    Fox- Активный пользователь

    С нами с:
    11 янв 2018
    Сообщения:
    94
    Симпатии:
    3
    @ADSoft При входе и регистрации капчу использую с этим всё норм, а если пользователь вошел в аккаунт и например , как защитить комментарии без капчи, от спам ботов? Пытаюсь оптимизировать нагрузку на БД и тд.
    Например есть код
    Код (Text):
    1.  
    2.  
    3. function test()
    4.         {
    5.             $.ajax({
    6.                 url: "test.php",
    7.                 cache: false,
    8.                 success: function(html){
    9.                     $("#text").html(html);
    10.                 }
    11.             });
    12.         }
    13.      
    14.         $(document).ready(function(){
    15.             test();
    16.             setInterval('test()',7000);
    17.         });
    злоумышленник может посмотреть код страницы и увидеть к какому скрипту обращается ajax, а тот скрипт к БД обращается, запустив данный скрипт большое кол-ва раз будет на БД нагрузка. Злоумышленник просто url до скрипта test.php будет открывать многократно, cloudflare защита есть, но она наверное не поможет в таком случае.

    Еще вопрос, может в скрипте test.php прописать проверку на то гость обращается к скрипту или пользователь вошедший в аккаунт? Если это сделать, то по моей логике ботов отсею хотябы. Боты же не могут сохранять сессии вроде?

    Как мне защитить test.php ?
     
  7. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    922
    Симпатии:
    143
    1) на сервере всегда нужно проверять, авторизован ли посетитель;
    2) можно добавлять небольшую задержку на самом сервере, но это такое себе.
    Все проверки-задержки на клиенте обходятся.
     
  8. Fox-

    Fox- Активный пользователь

    С нами с:
    11 янв 2018
    Сообщения:
    94
    Симпатии:
    3
    cloudflare тут может вообще помочь или тут его полномочия всё ?
    --- Добавлено ---
    На стороне сервера поэтому пытаюсь сделать проверку, но как пока хз
     
  9. Fox-

    Fox- Активный пользователь

    С нами с:
    11 янв 2018
    Сообщения:
    94
    Симпатии:
    3
    По сути пытаюсь сделать так чтоб скрипт у каждого пользователя выполнялся не чаще чем через 7 сек.
    Чтоб на БД не было нагрузки.
    Думаю может в кеш сохранять
    Код (Text):
    1. $m = new Memcached();
    2. $m->addServer('localhost', 11211);
    3.  
    4. $json = 'error';
    5. if (!($json = $m->get('json'))) {
    6.   if ($m->getResultCode() == Memcached::RES_NOTFOUND) {
    7.     // Долго и трудоемко вычисляем JSON
    8.     $json = '{...}';
    9.     // Устанавливаем значение на 7 секунды
    10.     $m->add('json', $json, 7);
    11.   }
    12. }
    13. echo $json;
    не будет ли сервер грузится от этого больше?
     
    #9 Fox-, 21 янв 2023
    Последнее редактирование: 21 янв 2023