Фильтрация пользовательских данных перед их обработкой — обязательный шаг в любом приложении. Передача «сырых» данных в программу может привести к серьёзным уязвимостям.
Проверка целого числа в диапазоне
$value = filter_input(INPUT_GET, "value", FILTER_VALIDATE_INT,
array("options" => array("min_range" => 15, "max_range" => 20)));
if ($value) {
// Выполняем обработку данных
} else {
print "Вы ввели недопустимое значение";
}
Валидация email
function emailUser($email) {
$email = filter_var($email, FILTER_VALIDATE_EMAIL);
if ($email !== false) {
mail($email, "Письмо", "Содержание");
}
}
Безопасный запрос через PDO
Используйте привязку параметров для защиты от SQL-инъекций:
$pdo = new PDO('sqlite:users.db');
$stmt = $pdo->prepare('SELECT name FROM users WHERE id = :id');
$stmt->bindParam(':id', $_GET['id'], PDO::PARAM_INT);
$stmt->execute();
Доступные фильтры
FILTER_SANITIZE_STRING — удаляет символы <>?
FILTER_SANITIZE_EMAIL — удаляет специальные символы из email
FILTER_SANITIZE_NUMBER_INT — оставляет только цифры и знаки +/-
FILTER_SANITIZE_URL — сохраняет только допустимые для URL символы
Данные фильтры — лишь один из инструментов в процессе очистки и не обеспечивают полную защиту от всех видов атак. Используйте их в связке с подготовленными запросами PDO и другими методами валидации.