Какво е 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 инжекция (Classic SQL инжекция): При тази техника хакерът използва същия начин, за да хакне базата данни и да получи данните, т.е. резултат от базата данни.
  1. Базирано на грешки инжектиране на SQL: При този тип хакерът получава модел на грешка в базата данни и достъп до нея. Можем да кажем, че това е един вид вградена SQL инжекция.
  1. Съюзна базирана инжекция SQL: Тази техника също е част от вътрешната SQL инжекция. В тази техника потребителят комбинира заявката и получава резултата обратно като част от HTTP отговор.
  1. Инференциална SQL инжекция (Blind SQL инжекция): Както подсказва името, тук хакерът не използва лентата за получаване на данни от базата данни. Хакерът има възможност да променя структурата на базата данни, като наблюдава моделите на базата данни. Това е много опасен тип SQL инжектиране. Тази атака отнема повече време за изпълнение. Хакерът не е в състояние да види изхода от атака с тази техника.
  1. Булева основа (базирана на съдържание) сляпо SQL инжектиране: Това е част от инферентната 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