Back to questions
Ozon Финтех
Middle+
4
Что такое SQL-инъекция? Приведите пример уязвимого запроса и способы защиты
Companies where asked
Answer from AI
sobes.tech AI
SQL-инъекция — это уязвимость, при которой злоумышленник может внедрить вредоносный SQL-код в запрос к базе данных через пользовательский ввод. Это может привести к несанкционированному доступу, изменению или удалению данных.
Пример уязвимого запроса на Go:
username := r.FormValue("username")
query := fmt.Sprintf("SELECT * FROM users WHERE username = '%s'", username)
rows, err := db.Query(query)
Если пользователь введет username как ' OR '1'='1, запрос станет:
SELECT * FROM users WHERE username = '' OR '1'='1'
что вернет все записи.
Способы защиты:
- Использование подготовленных выражений (prepared statements) с параметризацией:
stmt, err := db.Prepare("SELECT * FROM users WHERE username = ?")
rows, err := stmt.Query(username)
- Валидация и экранирование пользовательского ввода.
- Использование ORM, которые автоматически защищают от инъекций.
- Ограничение прав доступа к базе данных.
Таким образом, основная защита — это параметризация запросов, которая отделяет код SQL от данных.