Що таке інжекція SQL?

SQL Injection - це техніка введення коду, яка використовується для атаки керованих даними додатків, вставляючи зловмисні оператори SQL у поле виконання. База даних є життєво важливою частиною будь-якої організації. Цим вирішується безпека високого рівня в організації. Давайте спочатку дізнаємося, що таке SQL.

Що таке SQL?

SQL - це структурована мова запитів. Використовується для взаємодії та маніпулювання базою даних.

Що саме робить SQL?

  • Створіть нову базу даних.
  • Вставка, оновлення, видалення записів.
  • Створіть нові запити.
  • Збережені процедури.
  • Створення переглядів.
  • Виконати запити.
  • Встановити дозволи.

Ін'єкція SQL - одна з головних загроз безпеці. Це підпадає під кіберзлочинність.

У SQL у нас є концепція під назвою SQL Injection. Цей прийом використовується для введення коду. SQLi (ін'єкція SQL також відома як тип злому, тобто ін'єкційна атака.) Також відома як техніка веб-злому.

Ця ін'єкція вводить зловмисний код у базу даних, надаючи дані на веб-сторінці. Ці входи мають деякі умови, які завжди відповідають дійсності. За таких умов хакери легко проходять тести на безпеку. Вони можуть легко отримати дані з бази даних SQL. За допомогою SQL Injection вони можуть додавати, змінювати та видаляти записи в базі даних. Ця база даних може бути будь-хто серед MySQL, SQL Server, Oracle, SQL Server тощо, є незаконною.

Якщо веб-сайт або програма погано розроблені, ці атаки можуть завдати шкоди всій системі. У цей момент в картину вступає кібербезпека.

Поведінка ін'єкції SQL

Ці атаки, як правило, працюють на динамічних операторах SQL. Інжекція SQL залежить від двигуна бази даних. Це відрізняється від двигуна до двигуна. Коли ми просимо ввести інформацію про користувача на веб-сторінці, наприклад, ім’я користувача та пароль. Мимоволі ми надаємо користувачеві доступ, щоб передати цей ввід безпосередньо в базу даних.

Типи ін'єкції SQL

  1. Вбудована SQL ін'єкція (Класична інжекція SQL): У цій техніці хакер використовує той самий спосіб, щоб зламати базу даних та отримати дані, тобто результати з бази даних.
  1. Введення SQL на основі помилок: у цьому типі хакер отримує шаблон помилки бази даних та отримує доступ до неї. Можна сказати, що це один з типів внутрішньополосного введення SQL.
  1. Ін'єкція SQL на базі союзу: Ця методика також є частиною внутрішньої смугової ін'єкції. У цій техніці користувач поєднує запит і отримує результат назад як деяку частину відповіді HTTP.
  1. Інференційне введення SQL (Blind SQL injection): Як випливає з назви, тут хакер не використовує смугу для отримання даних з бази даних. Хакер має можливість змінювати структуру бази даних, спостерігаючи шаблони бази даних. Це дуже небезпечний тип ін'єкції SQL. Ця атака займає більше часу для виконання. Хакер не в змозі побачити вихід атаки цією технікою.
  1. Булеві (на основі вмісту) сліпі ін'єкції SQL: Це частина Inferential SQL ін'єкції. У цій техніці хакер змушує базу даних отримати результат на основі істинного або хибного стану. Залежно від цієї умови результат HTTP-відповіді змінюється. Цей вид атаки для висновку, якщо використаний корисний навантаження повернув істинно чи помилково, хоча дані з бази даних не повертаються назад. Це особливо повільні атаки.
  1. Інженерія сліпого SQL на основі часу: ця методика також є частиною Inferential SQL ін'єкції. Цю техніку хакери використовують для розміщення корисних навантажень. У цій техніці хакери надають час базі даних для виконання запиту. Тим часом хакер отримує уявлення про результат, правдивий він чи хибний. Цей процес нападу також має повільний характер.
  1. Позабійна інжекція SQL: Це атака на основі функцій. Це не дуже часто. Ця атака використовується хакером, коли хакеру потрібно використовувати різні канали для атаки та інші, щоб отримати результат. Методи інжекцій поза діапазону SQL залежать від здатності сервера бази даних робити запити DNS або HTTP для доставки даних хакеру.

Як це працює?

В основному є два способи, коли зловмисник фокусується на отриманні даних:

  1. Пряма атака: безпосередньо за допомогою комбінації різних значень. Тут хакер поставив підтверджений вклад, який дає точний результат.
  2. Дослідження: Аналіз бази даних шляхом надання різного введення. Тут зловмисник спостерігає за реакціями сервера бази даних і вирішує, яку атаку потрібно зробити.

Як ми вже обговорювали, хакери інжекцій SQL ставлять умову у вхідний елемент, що завжди відповідає дійсності. Перевірте наступний приклад.

EX:

Припустимо, у нас є наступний запит на отримання даних про співробітників із бази даних:

500 АБО 1 = 1

Виберіть * серед співробітників, де Userid = '500'

Ідентифікатор користувача :

Якщо у нас немає жодних обмежень щодо введення даних користувача. Тоді хакери можуть використовувати це поле для легкого доступу до даних із бази даних.

І запит може виглядати нижче

Виберіть * серед співробітників, де User-id = 500 АБО 1 = 1;

Цей запит повертає дані з бази даних, оскільки 1 = 1 завжди повертає істинні. Таким чином умова стає справжньою. Це здається вразливим. Це дуже небезпечно для організації. Наприклад, подумайте про банківський сектор. Там, де користувачі мають свої чисті банківські реквізити паролів, інформацію про баланс тощо.

Ця техніка дуже проста для отримання хакером інформації. Просто надавши деякий вклад у базу даних.

Хакери отримують дані просто вставляючи АБО і = вставляючи їх у базу даних.

Ім'я користувача:

"Або" "="

Пароль:

"Або" "="

На сервері кінцевий запит виконується правильно, помилка не виникає. Також ви можете використовувати 'АБО' 1 '=' 1 для отримання даних з сервера баз даних.

Тепер виникає питання, як би ми підтримували безпеку нашої бази даних?

А відповідь - за допомогою параметрів SQL.

Додаючи додаткові параметри запиту під час його виконання. Ці напади легко запобігти деякими нижче методиками.

Захищені процедури, підготовлені висловлювання, регулярні вирази, права доступу користувачів на базу даних, повідомлення про помилки тощо - це методи запобігання .

Ще одне, що, ми повинні подумати, також є розумним мати різні бази даних для різних цілей у додатку.

Ще одна річ - це тестування. Тестування бази даних на різні умови - це також найкращий спосіб.

Висновок

Створення бази даних - важлива частина. Ризик отримати інформацію в хакерських руках не є корисним для будь-якого додатка. Отже, створюючи базу даних, ми повинні дотримуватися декількох простих кроків для запобігання цієї втрати, для цього підходить фраза: «Профілактика краще, ніж лікування».

Рекомендовані статті

Це було керівництвом щодо того, що таке інжекція SQL. Тут ми обговорюємо поведінку, як це працює та типи ін'єкції SQL. Ви також можете ознайомитися з іншими запропонованими нами статтями, щоб дізнатися більше -

  1. Що таке SQL Server?
  2. Що таке SQL | Пояснена мова запиту
  3. Що таке SQL Developer?
  4. Оновлення команд SQL
  5. Регулярні вирази на Java