Здравствуйте, у меня https, но это не имеет значения наверное, под cloudflare сервер. Вопрос: могут ли посмотрев в браузере какой POST запрос отправляется, создать ботов, которые будут отправлять эти пост запросы в большом количестве и cloudflare их пропустит ? Или всё таки он заблокирует их? Если не заблокирует, то можно ли POST форму защитить чекбоксом следующим способом: Код (Text): <form action="checkbox-form.php" method="post"> Do you need wheelchair access? <input type="checkbox" name="formWheelchair" value="Yes" /> <input type="submit" name="formSubmit" value="Submit" /> </form> if(isset($_POST['formWheelchair']) && $_POST['formWheelchair'] == 'Yes') { echo"Need wheelchair access."; } else { echo"Do not Need wheelchair access."; } В браузере перехватил POST с чекбоксом, вроде нажатие чекбокса не передается через POST или я плохо искал Есть стопроцентный вариант с числовой капчей, но на юзабилити это плохо отразиться. Подойдет ли мой пример кода для защиты от ботов? {при регистрации} Если есть варианты поделитесь.
что за бред.... если отмечен - передается, не отмечен - не передается ... бот сможет передавать если надо или непередавать если не надо есть небольшой хак - использование полей, скрытых от пользователя - например через style="display: none" пользователь не может его увидеть и никогда не заполнит, в отличие от глупого бота - который видит поле - считает своим долгом его заполнить и передать - тогда если пришло в этом поле что-то - 100% бот но все не панацея... если к написанию бота подойдет человек - который все проверит и сделает сначала ручками - ничего не сделать.
От ботов можно еще защититься CSRF токеном, если бот не имитирует человека. Можно также воспользоваться библиотекой mekras/botobor, которая работает по принципу "заставить роботов выдать себя". --- Добавлено --- Это, конечно, классика, но крайне не удобно для пользователя: мы заставляем пользователя выполнять ненужные ему и не всегда простые действия. Использование метода "выдавать бота" от Нед Батчелдер куда интереснее.
@ADSoft При входе и регистрации капчу использую с этим всё норм, а если пользователь вошел в аккаунт и например , как защитить комментарии без капчи, от спам ботов? Пытаюсь оптимизировать нагрузку на БД и тд. Например есть код Код (Text): function test() { $.ajax({ url: "test.php", cache: false, success: function(html){ $("#text").html(html); } }); } $(document).ready(function(){ test(); setInterval('test()',7000); }); злоумышленник может посмотреть код страницы и увидеть к какому скрипту обращается ajax, а тот скрипт к БД обращается, запустив данный скрипт большое кол-ва раз будет на БД нагрузка. Злоумышленник просто url до скрипта test.php будет открывать многократно, cloudflare защита есть, но она наверное не поможет в таком случае. Еще вопрос, может в скрипте test.php прописать проверку на то гость обращается к скрипту или пользователь вошедший в аккаунт? Если это сделать, то по моей логике ботов отсею хотябы. Боты же не могут сохранять сессии вроде? Как мне защитить test.php ?
1) на сервере всегда нужно проверять, авторизован ли посетитель; 2) можно добавлять небольшую задержку на самом сервере, но это такое себе. Все проверки-задержки на клиенте обходятся.
cloudflare тут может вообще помочь или тут его полномочия всё ? --- Добавлено --- На стороне сервера поэтому пытаюсь сделать проверку, но как пока хз
По сути пытаюсь сделать так чтоб скрипт у каждого пользователя выполнялся не чаще чем через 7 сек. Чтоб на БД не было нагрузки. Думаю может в кеш сохранять Код (Text): $m = new Memcached(); $m->addServer('localhost', 11211); $json = 'error'; if (!($json = $m->get('json'))) { if ($m->getResultCode() == Memcached::RES_NOTFOUND) { // Долго и трудоемко вычисляем JSON $json = '{...}'; // Устанавливаем значение на 7 секунды $m->add('json', $json, 7); } } echo $json; не будет ли сервер грузится от этого больше?