Sobes.tech
Назад к вопросам
Junior — Middle
83

Каким образом происходит внедрение вредоносных SQL-запросов в приложение и каким образом системы защищаются от этого вида уязвимости?

Компании, где спрашивали
WildberriesWildberries

Ответ от нейросети

sobes.tech AI

Внедрение вредоносных SQL-запросов (SQL-инъекция) происходит, когда злоумышленник вставляет или изменяет SQL-код через вводимые пользователем данные, которые затем напрямую подставляются в запрос к базе данных без должной проверки.

Например, если приложение формирует запрос так:

query := fmt.Sprintf("SELECT * FROM users WHERE username = '%s'", userInput)

и userInput содержит что-то вроде admin' OR '1'='1, то итоговый запрос становится:

SELECT * FROM users WHERE username = 'admin' OR '1'='1'

что вернет все записи, обходя аутентификацию.

Защита от SQL-инъекций включает:

  • Использование параметризованных запросов (prepared statements), где параметры передаются отдельно от SQL-кода.
  • Валидацию и экранирование пользовательского ввода.
  • Использование ORM или специализированных библиотек, которые автоматически защищают от инъекций.

Пример безопасного запроса в Go с использованием database/sql:

stmt, err := db.Prepare("SELECT * FROM users WHERE username = ?")
if err != nil {
    // обработка ошибки
}
rows, err := stmt.Query(userInput)

Таким образом, параметры не влияют на структуру SQL-запроса, предотвращая внедрение вредоносного кода.