ПредишенСледващото

В SQL nedrenie, в зависимост от вида на база данни и въвеждането на условия може да позволи на някой хакер да изпълни произволен заявка към базата данни (например, да се запознае със съдържанието на всяка маса, да отстранява, променя или да добавите данни), за да може да се чете и / или пишете локални файлове и изпълни произволен команди на сървъра приемник.
SQL изпълнение тип атака може да е възможно поради неправилна обработка на използвани в SQL-заявка входни данни.
приложения за разработчици, работа с бази данни, трябва да са наясно с тези уязвимости и да вземат мерки за противодействие изпълнение SQL.

SQL инжекция атаки на принципа на
Да предположим, че софтуера на сървъра, на базата на данни параметър номер, използва го, за да създадете SQL-заявка. Помислете за това на PHP-скрипт:

По този начин, промяната на входните параметри като ги добавите към SQL езикови конструкции води до промяна в логиката на SQL-заявка (в този пример, вместо новините с цялата посочен идентификатор, съхранявани в базата данни ще бъде избран от новината, защото изразът 1 = 1 винаги е вярно).

Въвеждането на параметрите на низ
Да предположим, че сървърния софтуер получи заявка за извличане на данни в опцията за новини SEARCH_TEXT, използвайте го по следния SQL-заявката (параметри избягали кавички тук):

Но с въвеждането на параметър в текст_търсене цитат характер (която се използва в заявката), можем да променят коренно поведението на SQL-заявка. Например, минавайки като текст_търсене параметър стойност ") + и + (news_id_author =" 1, което наричаме искане за извършване на:

Използването СЪЮЗ
SQL език ви позволява да комбинира резултатите от няколко заявки с помощта на оператора на Съюза. Това дава на някой хакер да получите неоторизиран достъп до данни.
Помислете за показване на новини скрипт (ID новини искате да покажете се предава на параметъра ID):

Ако нападателят да премине като параметър ID дизайн -1 UNION SELECT 1, потребителско име, парола, 1 ОТ администратор, това ще доведе до изпълнение на SQL-заявка

Тъй новини идентификатор -1 очевидно не съществува, масата на новините е избран аудиозапис, но ще падне в резултат записи неоторизирани избрани от администратор на маса в резултат на SQL инжекция.
Използване ЮНИОН + group_concat ()
В някои случаи, атакуващият може да се монтира една атака, но не можеше да види повече от една колона. В случай на MySQL хакер може да използвате функцията:

която обединява няколко колони в една. Например, за пример на по-горе функция покана е:

Защитна опашка заявка
Често, SQL-заявка засегнати от тази уязвимост, има структура, която да усложни или изключва употребата на съюза. Например скрипт

Това се предава по структура, съдържаща запетая, например 12; INSERT INTO администратор (потребителско име, парола) стойности ( "хакер", "Фу '); 2-те отбори ще бъдат изпълнени в една заявка

и масата ще администрирате незаконно добавя запис Hacker.
Методи за тип изпълнение на атака SQL-код
Търсене скриптове са уязвими за атаки
В този момент на нападателя изучава поведението на скриптове на сървъра за манипулация входни параметри за откриване на аномално поведение. Манипулирането се случва във всички възможни параметри:
Данните, предавани по пощата и да получите методи
Стойностите [HTTP-бисквитки]
HTTP_REFERER (скриптове)
AUTH_USER и AUTH_PASSWORD (с използване на удостоверяване)
Като правило, манипулацията е в размер на заместване на параметрите на един знак (понякога се удвои или назад) кавички.
Необичайно поведение е всяко поведение, в който страниците получени преди и след заместване кавички, различна (и не се показва на страницата не е наред формат параметър).
Най-често срещаните примери за необичайно поведение:
се появява съобщение за различните грешки;
когато (например, новини или продуктова листа) исканата информация не се появи изобщо, въпреки че се появи искане за информация на страницата
и така нататък. д. Имайте предвид, че има случаи, когато съобщенията за грешки, поради специфичното оформление на страницата не се вижда в браузъра, въпреки че присъства в своя HTML код.
Защита срещу атаки, като например въвеждането на SQL-код
За защита срещу този тип атака трябва внимателно да филтрира входящите параметри, които ще бъдат използвани за конструиране на SQL-заявка.
Филтрация параметри от низа
Да предположим, че кодът, генериране на заявка (програмиране Pascal), както следва:

За въвеждането на кода не е било възможно, за някои СУБД, включително за MySQL, трябва да бъде цитиран всички параметри на низ. В параметъра замени кавичките в "апостроф в \" наклонена черта към \\ (това се нарича "проверка на специални знаци") Възможно е да се направи такъв код .:

филтриране може да бъде такава, че да PHP:

Свързани статии

Подкрепете проекта - споделете линка, благодаря!