Один з найбільших класів веб-уразливостей відомий як «SQL Injection» або SQLi. Мова структурованих запитів, або SQL, є мова, яка використовується для взаємодії з більшістю баз даних, хоча в залежності від бази даних використовується ряд варіантів мови платформа. Будь-який веб-сайт, який зберігає дані користувача, наприклад інформацію облікового запису, або надає функції завантаження користувача, наприклад веб-сайт для розміщення зображень, буде використовувати базу даних для зберігання цих даних.
Порада: SQL зазвичай вимовляється «ess cue ell» або «sequel», причому перший варіант більш поширений у британській англійській, а другий більш поширений в американській англійській. Обидва варіанти вимови зазвичай розуміються в контексті розмови про бази даних.
Що таке SQLi?
SQLi – це вразливість, через яку веб-розробники, які розробляють код, який спілкується між веб-сервер і база даних не реалізують захист від команд SQL, надісланих a користувач. Проблема в тому, що можна вийти з операторів бази даних і додати нові аргументи або зовсім новий оператор. Змінений або другий оператор бази даних може виконувати ряд дій, включаючи потенційно масштабне видалення або витік даних.
Експлойти, як правило, пов’язані з тим, щоб зробити існуючі твердження істинними за будь-яких обставин або надати другу групову команду, яка виконує певну дію, наприклад, видалення або відображення всіх даних. Наприклад, оператор SQL для входу на веб-сайт може перевірити, чи відповідають подані ім’я користувача та пароль запису в базі даних. Щоб спробувати отримати доступ до ін’єкції SQL, можна спробувати додати речення «або true», наприклад «або 1=1». Це зробить команду на зразок «увійти з [цим] ім’ям користувача, якщо пароль [це], або це твердження вірне».
Як запобігти SQLi
Раніше SQLi був дуже поширеним способом для веб-сайтів зламати бази даних, а потім витікати в Інтернет. Завдяки спільним зусиллям, щоб переконатися, що знання безпеки є частиною навчання розробників, цей клас уразливості було в основному усунено, і його можна побачити лише рідко.
Правильним методом запобігання SQLi є використання підготовлених операторів, також відомих як параметризовані запити. Традиційно, оператори SQL оголошуються і введені користувачем об’єднуються в них під час цього оголошення. З підготовленими операторами команда бази даних записується, а потім функція sperate запускає команду та вставляє дані користувача. Хоча це може здатися незначною різницею, вона повністю змінює спосіб обробки команди. Різниця запобігає запуску будь-яких значущих команд SQL і розглядає весь введений користувачем як рядок, запобігаючи ін'єкції SQL.