Чтобы было понятно – на конкретном примере. Нужно защитить замок от визита нежелательного гостя.
Вариант 1: гость подходит к воротам, они открываются, из замка выходит охранник, спрашивает у гостя «Кто такой? Цель визита?», получает от того кистенем по башке, гость отбирает у побеждённого охранника ключи, отпирает ворота и заходит в замок. Так работают проверки на фронтэнде (HTML-5,JavaScript, JQuery и т. п.)
Вариант 2: гость подходит к воротам, через стену замка перелетает записка с вопросами «Кто такой? Цель визита?». Гостю нужно написать свои ответы на этой записке и перебросить её обратно через стену обитателям замка. Если ответ окажется удовлетворительным – ворота откроются и гостя впустят. Если нет – свободен. Так работают проверки на бэкэнде (PHP, ASP, Python и т. д.)
Работает всё это, как правило, в комби-варианте. Первый вариант – выполняется на стороне пользователя, в его браузере, это для рассеянных и забывчивых, на случай обычных повседневных ошибок. Второй вариант – выполняется на стороне сервера, это надёжная страховка от злоумышленников, ботов и пр.
Забавно конечно придумали. Но если вы именно для меня старались, то зря. Эту базу я понял когда начал пытать gpt, чтобы он добавил какую либо защиту в файле mail.php. Я конечно благодарен за советы, но думаю куски кода мне бы пригодились больше чем сказка 17 - ого века)
да.
<script src="https://cdn.jsdelivr.net/npm/jquery.maskedinput@1.4.1/src/jquery.maskedinput.min.js" type="text/javascript"></script><script>document.addEventListener("EasyNetShopModalOpened", function(event) { ens_jQuery(function() { ens_jQuery('input[name="phone"]').mask('+7(999)999-99-99'); }); }, false);</script>
эта "проверка" это для обычных браузеров, с js. бот просто взял код формы, ему без разницы ваш js.
тут еще должна быть регулярка которая проверит точно ли там номер, а не чтото постороннее.
if ($_SERVER["REQUEST_METHOD"] == "POST") { // Проверка на заполнение поля телефона if (empty($_POST['wgphone'])) { http_response_code(400); echo "Введите номер телефона."; exit; } // Регулярное выражение для проверки формата номера телефона $phone = $_POST['wgphone']; $phonePattern = "/^\+?[0-9]{10,15}$/"; // Пример: допускаются номера с 10 до 15 цифр, с "+" в начале if (!preg_match($phonePattern, $phone)) { http_response_code(400); echo "Введите корректный номер телефона."; exit; } // Остальной код обработки}
так там должна быть проверка, именно там она настоящая. в форме проверка это защита "от дурака", чтоб юзеру понятнее было что вводить. но если бот без js то никакой валидации не происходит на форме. А дальше там и XSS могут быть.
Не особо смогу вам как мастер php отвечать, очень поверхностно.
Возможно это имели ввиду
if ($_SERVER["REQUEST_METHOD"] == "POST") { // Проверка на заполнение поля телефона if (empty($_POST['wgphone'])) { http_response_code(400); echo "Введите номер телефона."; exit; }
у вас в php скрипте нету проверок.
Можно и нужно. Например запретить пост-запрос если капча не пройдена, отправлять верификационный токен... масса способов есть.
Значит твоя валидация просто не работает. То есть маска может и срабатывать на фронте, но на бэкенд может отправиться что угодно. То есть бот собирает пост-запрос и шлет его, минуя валидацию твою.