PHP/MySQL | норм защита от sql inj или не

неправильное применение фильтров, ты не проверяешь данные, ты из очищаешь и зачем-то приводишь к другому типу
базе данных похер такие очистки в БД всё залетает в виде СТРОК
очищать нужно при выводе в браузер и то на любителя, если не хочешь XSS чтобы балдели на страницах, XSS не выполняется в БД, строка хранится в том же виде

норм защита строк от скл иньекций mysql на php 5.6 или неочень, не сильно шарю в безопасности...
еще такйо вариант есть, но хз в чем разница:
function jopa($str) {
$str = mysql_real_escape_string($str);
return $str;
}
еще такйо вариант есть, но хз в чем разница:
function jopa($str) {
$str = mysql_real_escape_string($str);
return $str;
}
mysql_real_escape_string() считается устаревшей в 5.6 так что использовать её не целесообразно
<?php
function filter($data) {
$explode = explode("|", $data);
if (count($explode) != 3) {
return null;
}
$method = $explode[0];
$name = $explode[1];
$type = $explode[2];
$array_method = [
"get" => INPUT_GET,
"post" => INPUT_POST,
];
$array_type = [
"int" => FILTER_VALIDATE_INT,
"str" => FILTER_SANITIZE_SPECIAL_CHARS,
];
if (array_key_exists($method, $array_method) && array_key_exists($type, $array_type)) {
$filter_input = filter_input($array_method[$method], $name, $array_type[$type]);
if ($filter_input !== false) {
return $filter_input;
}
}
return null;
}
function xss_protection($data) {
return htmlspecialchars($data, ENT_QUOTES, mb_internal_encoding());
}
$login = filter("post|login|str");
$password = filter("post|password|str");
echo xss_protection("<script>alert();</script>");
Код написал по памяти без тестирования, но по идее должен работать. Первую функцию я придумал, а вторую не помню, где видел — вроде на каком-то фреймворке.
________
посл. ред. 06.09.2025 в 12:38; всего 2 раз(а); by STUDIO