Пэлт
Здравствуйте!
От чего не может защитить эта функция?
PHP:
function filter($m){ /* FILTER от sql инъекций!*/ } else { } return $m; }
MouseZver
не от чего
Пэлт
Можете посоветовать лучший вариант защиты от инъекций sql?
Asifar
Что ты используешь для обращения в базу? mysqli или pdo
BAbl_gun
Если не ошибаюсь то вопрос по защите от инъекций проработан в PDO в расширении php.
Drunkenmunky
Не ошибаетесь, но заблуждаетесь.
Вопрос проработан двумя способами: в подготовленных запросах и в экранировании опасных символов с учетом кодировки соединения.
Подготовленные запросы не требуют экранирования, так как сам запрос и данные для него в базу данных поступают раздельно. Поддерживаются они не только в PDO, но и в mysqli.
Asifar
Если вы используете mysqli юзайте
PHP:
$login = $mysqli->real_escape_string($_POST[‘login’]); $query = $mysqli->query(«SELECT * FROM users WHERE login=’{$login}‘»)->fetch_assoc();Или если используете pdo
PHP:
$query = $pdo->preapre(‘SELECT * FROM users WHERE login=:login’); $query->execute([‘:login’ => $_POST[‘login’]]); $fetch = $query->fetch(PDO::FETCH_ASSOC);
mkramer
Ну intval я понимаю. abs — не понимаю. А если я захочу отрицательное число в базу положить? Низзя? По поводу текстовых данных. htmlspecialchars нужна для того, чтобы заменить некоторые символы, имеющие значение в HTML на сущности. Отсюда вопрос: кто исполняет HTML? Базе глубоко фиолетово, есть там HTML или нету. Поэтому эту функцию уместно использовать при выводе значений в браузер. А от чего уместно нам защититься — так это от тех символов, которые могут изменить смысл нашего SQL-запроса, и большей частью это кавычки, но не только. Посему да, или экранируем, или подготовленные запросы. и то и другое есть и в mysqli и в PDO. С подготовленными запросами из коробки удобнее работать в PDO