Фильтрацию данных в PHP можно делать в нескольких местах в зависимости от контекста. Основные области фильтрации:
🚩Фильтрация входных данных
Когда мы получаем данные от пользователя (
$_GET, $_POST, $_REQUEST), важно очищать их от нежелательных значений. $name = filter_input(INPUT_POST, 'name', FILTER_SANITIZE_STRING);
$email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL);
Фильтрация массива
$_POST через filter_var_array() $filters = [
'name' => FILTER_SANITIZE_STRING,
'email' => FILTER_VALIDATE_EMAIL,
'age' => FILTER_VALIDATE_INT
];
$filteredData = filter_var_array($_POST, $filters);
🚩Фильтрация перед сохранением в базу данных
Перед вставкой в SQL важно удалять потенциально опасные символы, чтобы избежать SQL-инъекций.
$db = new PDO("mysql:host=localhost;dbname=test", "root", "password");
$stmt = $db->prepare("INSERT INTO users (name, email) VALUES (:name, :email)");
$stmt->execute([
':name' => htmlspecialchars($_POST['name']),
':email' => $_POST['email']
]);🚩Фильтрация данных внутри кода
Если данные поступают из разных источников, мы можем использовать фильтрующие функции PHP:
Очистка строки от HTML
$cleanText = strip_tags("<h1>Hello</h1>"); // "Hello"Удаление пробелов
$trimmed = trim(" example "); // "example"Приведение к числу
$number = filter_var("42abc", FILTER_SANITIZE_NUMBER_INT); // 42🚩Фильтрация перед выводом (защита от XSS)
Перед выводом в браузер очищаем данные от HTML/JS-кода, чтобы злоумышленник не внедрил скрипты.
echo htmlspecialchars("<script>alert('Hacked!')</script>");
// Выведет: <script>alert('Hacked!')</script>Ставь 👍 и забирай 📚 Базу знаний