Безопасен ли данный код с точки зрения SQL инъекции, в интернете не смог найти однозначного ответа, один пишут что да, другие нет. Хотелось бы услышать ваши комментарии по поводу уязвимости (если она есть напишите где именно слабое место), пожалуйста не пишите про использование PDO, интересует именно то, допускает ли такое регулярное выражения SQL инъекцию, спасибо.
$login = $_POST['login'];
if (!preg_match('/^[A-z0-9]{5,10}$/', $login)) {
exit('login invalid');
}
mysqli_query($data_base, "SELECT `name` FROM `users` WHERE `login` = '$login'");
Приведенный Вами код АБСОЛЮТНО безопасен от SQL иньекций по причине того, что SQL отсутствует.
Если приведете коды SQL - уточню ответ
Если Вы имеете в виду комментированный код - то ДА, после фильтра на регулярку SQL иньекция невозможна
Ну Вы меня троллите... Изменили вопрос и ответ - не в струю...
Увы, это типичная ситуация для этого сайта, когда на вопрос одного дурака кидаются отвечать два других, и в итоге получается чудовищная галиматья.
Разумеется, на регулярки в защите от инъекций полагаться нельзя.
Сам вопрос - это детский лепет, "Маааааам, можно я руки не буду мыть, я же на улице не быыыыл!". Сама идея торговаться на предмет "нужно ли мыть руки" - это уже красный сигнал, обсуждать тут в принципе нечего.
Но куда хуже то действие, которое он произведет оставаясь в сети: столь же неумные читатели осилят только два действия - "защищают ли регулярки от инъекций" и положительный принятый ответ. И очередная ересь начнет гулять по сети, как будто в несчастном языке РНР их и так мало.
Данный вопрос следует удалить, как неверно сформулированный и имеющий потенциально опасные последствия.
Функция mysqli_real_escape_string экранирует символы: NUL (ASCII 0), \n, \r, \, ', ", и Control-Z. Только эти символы и никакие другие могут вам навредить, в том числе являясь частью SQL-инъекции. Если ваша регулярка эти символы не пропускает, значит их нет, экранировать нечего, и SQL-инъекция в принципе невозможна.
UPDATE: При условии если строка без спецсимволов не выходит за пределы кавычек!
Источник: http://php.net/manual/ru/mysqli.real-escape-string.php
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости