Як уникнути “ін’єкцій” SQL

Інєкцією SQL називають технологію злому, яка додає в параметр код SQL, який згодом виконується як динамічний SQL Ця технологія особливо небезпечна тим, що будь-який, хто має доступ до Web-сайту організації і здатний вводити дані в текстові поля, потенційно може стати джерелом атак за допомогою інєкцій SQL Існує безліч шкідливих прийомів, що використовують прикріплюється код і змінені пропозиції WHERE Перед тим як приступити до вивчення методів захисту, дуже важливо зрозуміти сам принцип роботи цієї шкідливої ​​технології Про це ми і поговоримо в наступних розділах

Прикріплення шкідливого коду

Додавання термінатора інструкції, другий інструкції SQL і вмісту дозволяє зломщикові передати програмний код в рядок виконання Наприклад, якщо переданим параметром є 123 ; Delete OrderDetail —

то в динамічну рядок SQL буде додана інструкція DDL DELETE, яка і буде виконана в пакеті з основною:

SELECT *

FROM Customers

WHERE CustomerlD = 123; Delete OrderDetail

Термінатор інструкції завершує закладену програмістом операцію, після чого SQL Server розглядає триваючий текст як таку інструкцію в пакеті Завершальна лапка могла б привести до помилки виконання, проте ця проблема просто вирішується шляхом додавання маркера коментаря Який результат Порожня таблиця рядків замовлень (OrderDetails)

Серед інших популярних прикріплюються кодів можна згадати запуск команди xp_commandshell і установку пароля для користувача sa

Прикріплення or 1 = 1

Ще одним методом інєкцій SQL є модифікація пропозиції WHERE для вибірки більшої кількості рядків, ніж було спочатку передбачено

Якщо користувач вводить в текстове поле рядок 1231 or 1=1 —

то умова 1 = 1 (яке завжди істинно) впроваджується в пропозицію WHERE:

SELECT *

FROM Customers

WHERE CustomerlD = 423 or 1=1

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

Пароль Який пароль

Ще однією розповсюдженою інєкцією коду SQL є коментування решті частини коду, що підлягає виконанню Якщо користувач вводить в Web-форму UserName: Joe – Password: who cares

то результуючу інструкцію SQL можна буде прочитати таким чином:

SELECT USerlD FROM Users

WHERE UserName = Joe— AND Password = who cares

Включення маркера коментаря в поле імені користувача призводить до того, що подальша частина пропозиції WHERE, включаючи умову для пароля, ігнорується

Захист від інєкцій коду SQL

Запобігти проникненню інєкцій коду можна кількома шляхами

■ Використовуйте команди EXECUTE AS і ретельно визначайте ролі, щоб інструкції не мали дозволів на видалення таблиць

■ Використовуйте посилальну цілісність DRI щоб уникнути видалення рядків первинної таблиці разом з видаленням рядків вторинної таблиці

■ Ніколи не змішуйте динамічний SQL з даними, що вводяться користувачем у Web-формі Всі параметри обовязково передавайте за допомогою збережених процедур

■ Перевіряйте й видаляйте параметри, містять термінатори інструкцій, коментарі та символи хр_

■ Остерігайтеся динамічного SQL

■ Тестируйте свою базу даних з використанням методик інєкцій, описаних вище

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

Резюме

У нашу епоху кіберзлочинів як ніколи раніше важлива безпека Даних Вимога безпеки даних є одним з принципів інформаційної архітектури Незважаючи на те що цілком можливо призначити всім користувачам ролі системного адміністратора і ігнорувати питання безпеки, варто докласти зовсім небагато зусиль, і функціональність гнучкою і потужною системи забезпечення безпеки SQL Server захистить ваші дані у всіляких ситуаціях

Наступна глава завершує чергову частину книги, присвячену питанням адміністрування SQL Server У ній ми поговоримо про особливості розгортання та адміністрування версії SQL Server Express

Адміністрування SQL Server Express

Редакція SQL Server 2005 Express Edition, також звана SQL Server Express, або SSE, є спрощеною версією популярної системи управління базами даних SQL Server компанії Microsoft Будь база даних, створена в цій версії, може безпосередньо використовуватися будь-який інший версією SQL Server Компанія Microsoft зробила все для того, щоб зробити SSE доступною і корисною версією для всіх типів розробників, від початківців до досвідчених Функціональність і простота використання, закладені в SSE, зробила цю СУБД досить привабливим вибором для програмних додатків

SSE відмінно підходить для обмежених реалізацій, таких як організація робочого місця розробника баз даних Наприклад, до складу основного пакету встановлення не входять утиліти управління вони сформовані в окремий пакет завантаження До того ж SQL Server Express використовує модифіковану версію утиліти SQL Server Management Studio, яку ми також розглянемо в цій главі

Якщо ви хочете дізнатися, над чим компанія Micro-В s° ft працює в даний час, скористайтеся-* ^ £ И (мережі тесь блогами на сайті Microsoft Developer Net-work (MSDN)

Джерело: Нільсен, Пол Microsoft SQL Server 2005 Біблія користувача : Пер з англ – М: ООО ІД Вільямс , 2008 – 1232 с : Ил – Парал тит англ

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*