Зміст:
Визначення - Що означає інжекція SQL?
Ін'єкція SQL - це комп’ютерна атака, в якій зловмисний код вбудовується в погано розроблений додаток і потім передається в резервну базу даних. Потім шкідливі дані створюють результати запитів до баз даних або дії, які ніколи не повинні були виконуватися.
Техопедія пояснює інжекцію SQL
Переглянемо приклад атаки ін'єкції SQL:
Додаток, який виконує операції банку, містить меню, які можуть бути використані для пошуку деталей клієнта за допомогою точок даних, таких як номер соціального страхування клієнта. У фоновому режимі програма викликає запит SQL, який працює в базі даних, передаючи введені значення пошуку наступним чином:
ВИБІРТЕ ім’я клієнта, телефон, адреса, дата_збірки ДЛЯ БОГО social_sec_no = 23425
У цьому зразковому сценарії користувач вводить значення 23425 у вікні меню програми, вимагаючи від користувача ввести номер соціального страхування. Потім, використовуючи значення, надане користувачем, SQL-запит запускається в базі даних.
Користувач зі знаннями SQL може зрозуміти програму і замість того, щоб вводити єдине значення, коли його запитували за номером соціального страхування, вводити рядок "23425 або 1 = 1", який передається до бази даних наступним чином:
ВИБІРУЙТЕ ім’я клієнта, телефон, адреса, дата_файла, де БУДЬ соціально_сек_но = 23425 або 1 = 1
Заява WHERE важлива, оскільки вводить вразливість. У базі даних умова 1 = 1 завжди відповідає дійсності, і тому, що запит визначено для повернення клієнтських даних про номер соціального страхування (23425) або WHERE 1 = 1, запит повертає всі рядки таблиці, які не були первісний намір
Наведений вище приклад атаки ін'єкцій SQL простий, але він показує, як використовувати вразливість, щоб обманути додаток для запуску запиту або команди резервної бази даних.
Атаки ін'єкцій SQL можна пом'якшити, забезпечивши належну розробку додатків, особливо в модулях, які потребують введення користувачем для виконання запитів або команд бази даних. У наведеному вище прикладі додаток можна змінити так, щоб він приймав лише одне числове значення.