Проанализируйте безопасность следующего фрагмента PHP-кода, обрабатывающего входной параметр id и выполняющего запрос к БД:
$id = $_GET['id']

27 Окт в 05:41
4 +1
0
Ответы
1
Коротко: само присвоение
$id = $_GET['id']
без дальнейшей фильтрации либо параметризации запроса — небезопасно. Основные риски и рекомендации.
Уязвимости
- SQL‑инъекция: если потом строка подставляется в SQL напрямую, например
$sql = "SELECT * FROM users WHERE id = $id";
злоумышленник может передать payload вроде `1 OR 1=1`, что превратит условие в 1=11=11=1 и вернёт все записи.
- Непроверенные типы / type juggling: строковые значения, булевы/числовые сравнения в PHP могут вести себя неожиданно при строгих/нестрогих проверках.
- XSS/инъекция в другие контексты: если $id затем выводится в HTML/JS без экранирования — возможен XSS.
- Неправильные попытки экранировать (например addslashes) ненадёжны против сложных атак.
Рекомендации (кратко и конкретно)
1) Используйте параметризированные запросы (PDO или mysqli prepared statements). Пример (PDO):
$sth = $pdo->prepare('SELECT * FROM users WHERE id = :id');
$sth->execute(['id' => $id]);
2) Валидируйте/нормализуйте вход прежде, чем биндить. Если ожидается целое число — примените:
$id = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT);
if ($id === false || $id === null) { /* обработать ошибку */ }
или приведение (с учётом логики):
$id = (int)$_GET['id']; // приводит к целому (int)(int)(int) 3) Экранируйте вывод в HTML/JS: при выводе в HTML используйте htmlspecialchars($value, ENT_QUOTES, 'UTF-8').
4) Ограничьте привилегии БД (least privilege) и логируйте подозрительные запросы.
5) Для сложных конструкций (IN‑списки, динамические поля) используйте явную валидацию/белый список, а не конкатенацию.
Итог: не доверяйте $_GET['id'] — либо валидируйте/приводите к нужному типу, либо (ещё лучше) передавайте как параметр в подготовленный запрос.
27 Окт в 06:03
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир