Назад к вопросам
Middle+
14
Найдите уязвимость в коде, который читает данные из GET-параметра
Компании, где спрашивали
CSSSR
Ответ от нейросети
sobes.tech AI
Чтение данных напрямую из GET-параметра без валидации и фильтрации открывает уязвимость типа SQL-инъекции, XSS или другие виды атак, в зависимости от того, как эти данные используются.
Например, если код выглядит так:
$userId = $_GET['user_id'];
$query = "SELECT * FROM users WHERE id = $userId";
$result = mysqli_query($conn, $query);
Здесь злоумышленник может подставить в параметр user_id вредоносный SQL-код, что приведет к компрометации базы данных.
Чтобы избежать уязвимости, необходимо:
- Использовать подготовленные выражения (prepared statements) с параметризацией.
- Валидировать и фильтровать входные данные (например, проверять, что
user_id— это число).
Пример безопасного варианта:
$userId = $_GET['user_id'];
if (!ctype_digit($userId)) {
die('Неверный параметр');
}
$stmt = $conn->prepare('SELECT * FROM users WHERE id = ?');
$stmt->bind_param('i', $userId);
$stmt->execute();
$result = $stmt->get_result();
Таким образом, уязвимость заключается в отсутствии проверки и фильтрации входных данных, что может привести к SQL-инъекциям и другим атакам.