Sobes.tech
Назад к вопросам
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-инъекциям и другим атакам.