Назад к вопросам
Wildberries
Junior — Middle
83
Каким образом происходит внедрение вредоносных SQL-запросов в приложение и каким образом системы защищаются от этого вида уязвимости?
Компании, где спрашивали
Ответ от нейросети
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-запроса, предотвращая внедрение вредоносного кода.