Захист сайту від злому запобігання sql-ін'єкцій

В недавній статті про те, як зламувати сайти, схильні до SQL-Інжект. я розповідав про програму SQLMAP. Під час написання статті (точніше переведення і тестування методу) мене неприємно здивувало кількість сайтів, в тій чи іншій мірі схильним до SQL-ін'єкцій.

З огляду на популярність SQLMAP і подібних їй інструментів, а також велика кількість сайтів, схильних до SQL-ін'єкцій, я вирішив написати кілька порад початківцям програмістам на PHP, як захистити базу даних від злому.

Для виявлення, чи схильна скрипт уразливості, я буду використовувати SQLMAP, робити це буду не на локалхосте, а на реальному хостингу. Для прискорення процесу тестування різних варіантів скриптів, я буду їх редагувати прямо на хостингу (Як редагувати файли прямо на хостингу). Поїхали.

Те, що передається параметру t прямо відправляється в sql-запит.

У ньому набраний свідомо вразливий скрипт:

Всього одна нова рядок позбавила від всіх проблем:

Захист сайту від злому запобігання sql-ін'єкцій

Пам'ятайте, що екранувати (як і фільтрувати) потрібно абсолютно всі дані, що приходять "з того боку", тобто від користувача. Навіть куки, навіть ті, які, здавалося б, жорстко прописані: наприклад, в випадаючому списку три опції - і обрана опція відправляється на сервер. Здавалося, як зумовлена ​​величина може допомогти в SQL-ін'єкції? Все дуже просто, сучасні браузери, навіть без спеціальних плагінів, дозволяють редагувати HTML-код на льоту. Тобто ви очікуєте одне з трьох значень, а отримуєте хитро сконструйований SQL-запит.

Ще одна поширена помилка - початківці програмісти думають, що є сторінка "для всіх" - це ті, які відповідають за роботу сайту. А є сторінки тільки для веб-майстра: Адаменко, технічні скрипти і т.п. І ці програмісти лінуються (або не вважають за потрібне) екранувати / фільтрувати дані. Це груба помилка - потрібно екранувати і фільтрувати всюди!

2. Фільтрація даних і приведення до очікуваного типу

Ви звернули увагу, що замість $ _GET [ 't'] я використовую filter_input (INPUT_GET, 't'). Я це роблю не просто так.

Якщо ми очікуємо отримати тільки число, то використовувати приблизно так filter_input (INPUT_GET, 't', FILTER_SANITIZE_NUMBER_INT)

Якщо ми хочемо, щоб були відкинуті всі теги і все спеціальні символи, то ми можемо використовувати filter_input (INPUT_POST, 't', FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW) в результаті чого видаляються всі теги, видаляються і кодуються спеціальні символи.

Давайте візьмемо наш найперший вразливий скрипт і спробуємо в ньому фільтрувати дані таким чином:

Тобто параметр вразливий до сліпої ін'єкції.

5. Перевіряйте все змінний на можливість Інжект

Змінні, про які часто забувають:

6. Використовуйте mod_security (або інший фаєрвол для веб-додатків).

mod_security не вирішить за вас усіх проблем, якщо ви використовуєте скрипти, що рясніють помилками і дірками. Але, тим не менш, він здорово підсилить будь-який сервер. Рекомендую мої ж статті:

висновок

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

Схожі теми

Злом віддаленого хоста за допомогою Cypher. Вітаю! У цій темі я продемонструю злом віддаленого хоста за допомогою програми Cypher. Вона дозволить нам додати корисне навантаження в виповнюється.

THC-Hydra: дуже швидкий зломщик мережевого входу в. Програма hydra підтримує величезну кількість служб, завдяки своїй швидкості і надійності вона завоювала заслужену вдячність серед тестерів.

Як встановити AMD APP SDK в Kali Linux. Ця інструкція з серії про те, Як встановити GLRX, AMD APP SDK, CAL ++ і Pyrit в Kali Linux. Ідея в тому, щоб встановити коректні драйвера в Kali.

Пентестінг VoIP з Viproy Привіт, форум! Періодично, так як тема VoIP мені близька, я шукаю інструменти для тестування на проникнення своїх серверів. Та й просто поба.

Основи Linux - командний рядок і файлова с. Перш ніж ви зможете освоїти Kali Linux, ви повинні вільно орієнтуватися в основних поняттях системи Linux. Уміння працювати з Linux буде дуже по.

Схожі статті