Въвеждането на SQL-код - е

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

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

SQL изпълнение тип атака може да е възможно поради неправилна обработка на използвани в SQL-заявка входни данни.

приложения за разработчици, работа с бази данни, трябва да са наясно с тези уязвимости и да вземат мерки за противодействие изпълнение SQL.

SQL инжекция атаки на принципа на

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

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

Въвеждането на параметрите на низ

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

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

Използването СЪЮЗ

SQL език ви позволява да комбинира резултатите от няколко заявки с помощта на оператора на Съюза. Това дава на някой хакер да получите неоторизиран достъп до данни.

Помислете за показване на новини скрипт (ID новини искате да покажете се предава на параметъра ID):

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

Тъй новини идентификатор -1 очевидно не съществува, масата на новините е избран аудиозапис, но ще падне в резултат записи неоторизирани избрани от администратор на маса в резултат на SQL инжекция.

Използване ЮНИОН + group_concat ()

В някои случаи, атакуващият може да се монтира една атака, но не можеше да види повече от една колона. В случай на MySQL хакер може да използвате функцията:

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

Защитна опашка заявка

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

В този пример, атакуващият може да предава скрипт със стойност на параметър идентификатора -1 UNION SELECT парола от администратор / *. по този начин изпълнението на молба

Разделяне SQL-заявка

За да се отдели команди на езика SQL, използван от героя; (Точка и запетая), въвеждане на героя в искането, атакуващият е в състояние да изпълни няколко команди в една заявка, но не всички SQL диалекти поддържат тази функция. MySQL, например, не поддържа.

Например, ако параметрите на сценария

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

и масата ще администрирате незаконно добавя запис Hacker.

Методи за тип изпълнение на атака SQL-код

Търсене скриптове са уязвими за атаки

В този момент на нападателя изучава поведението на скриптове на сървъра за манипулация входни параметри за откриване на аномално поведение. Манипулирането се случва във всички възможни параметри:

  • Данните, предавани по пощата и да получите методи
  • Стойностите [HTTP-бисквитки]
  • HTTP_REFERER (скриптове)
  • AUTH_USER и AUTH_PASSWORD (с използване на удостоверяване)

Като правило, манипулацията е в размер на заместване на параметрите на един знак (понякога се удвои или назад) кавички.

Необичайно поведение е всяко поведение, в който страниците получени преди и след заместване кавички, различна (и не се показва на страницата не е наред формат параметър).

Най-често срещаните примери за необичайно поведение:

  • се появява съобщение за различните грешки;
  • когато (например, новини или продуктова листа) исканата информация не се появи изобщо, въпреки че се появи искане за информация на страницата

и така нататък. д. Имайте предвид, че има случаи, когато съобщенията за грешки, поради специфичното оформление на страницата не се вижда в браузъра, въпреки че присъства в своя HTML код.

В този случай, полето за идентификационен номер е числен вид, а често и не вземат под кавички. Ето защо, "цитира" и заменянето специални символи избягат-последователности не минава. В този случай, се провери вида на помощ; идентификатор ако променливата не е число, по молба не трябва да се извършва най-малко.

Така например, в Делфи да се противопостави на тези инжекции помага код:

В случай на грешка функция StrToInt EConvertError ще предизвика изключение. и можете да покаже съобщение за грешка, за да му манипулатор. С двойно преобразуване осигурява правилния отговор на номер във формат $ 132AB на (шестнадесетично число система). При стандартния Паскал, които не могат да се справят с изключение, че кодът е малко по-сложно.

За PHP, този метод ще изглежда така:

Скъсяването на входните параметри

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

Например, ако знаете, че полето за идентификационен номер в горния пример може да бъде настроен да не повече от 9999, можете да "отрежете екстра" герои, оставяйки не повече от четири:

Използването параметризирани заявки

Много сървъри за бази данни поддържат възможността за изпращане на параметризирани заявки (приготвени извлечения). Параметрите на външен произход се изпращат на сървъра отделно от искането или автоматично защитени от клиента библиотека. За тази цел,

  • в Perl - преведе през DBI :: цитат или DBI :: подготвят;
  • на Java - чрез PreparedStatement клас;
  • на C # - SqlCommand.Parameters собственост;
  • на PHP - MySQLi (при използване на MySQL), ЗНП.
  • за синтактичен анализ - самият език не позволява на този вид атака [източник не е посочено 595 дни].

Тази статия липсва цитати източници на информация.

Вижте какво е "Изпълнителна SQL-код" в други речници:

SQL-инжекция - SQL инжекция (. Английски SQL инжекция) Един от най-разпространените начини да се хакват уеб сайтове и програми, работа с бази данни, въз основа на въвеждането на произволен SQL заявка, в зависимост от вида на база данни и въвеждането на условия, ... ... Wikipedia

SQL инжекция - SQL инжекция (. Английски SQL инжекция) Един от най-разпространените начини да се хакват уеб сайтове и програми, които работят с бази данни, въз основа на въвеждането на произволен SQL заявка, в зависимост от вида на база данни и въвеждането на условия, ... ... Wikipedia

SQL инжекция - SQL инжекция (. Английски SQL инжекция) Един от най-разпространените начини да се хакват уеб сайтове и програми, които работят с бази данни, въз основа на въвеждането на произволен SQL заявка, в зависимост от вида на база данни и въвеждането на условия, ... ... Wikipedia

SQL инжекция - (. Английски SQL инжекция) SQL инжекция е един от най-разпространените начини да се хакват уеб сайтове и програми, работа с бази данни, въз основа на въвеждането на произволен SQL заявка, в зависимост от вида на база данни и въвеждането на условия, ... ... Wikipedia

Microsoft SQL Server - Вид RDBMS Sybase за разработчици, Аштън Тейт, Microsoft ... Wikipedia

Съхранената процедура - съхранена процедура обекта база данни, която представлява набор от SQL отчети, които се събират веднъж и се съхраняват на сървъра. Съхранени процедури са много подобни на обикновената процедура, език на високо ниво, те могат да бъдат ... ... Wikipedia

Хакерски атаки - в тесния смисъл на думата в процес на фразата се отнася до "Атаката на системата за сигурност", и се навежда повече за значението на следните термини Krekerskaya атаката. Това се дължи на нарушаване на смисъла на думата "хакер". Хакер ... ... Wikipedia

  • Въвеждането на SQL-код. Dzhessi Rassel. Тази книга ще бъде направено в съответствие с вашата поръчка на технологии технология за печат при поискване. Високо качество на съдържанието от статиите в Уикипедия! Въвеждането на SQL-код (английски SQL инжекция.) - един от най ... Прочети повече купи за 1125 рубли