Як захистити свій сайт від злому?
Сьогодні Інтернет завойовує все більшу і більшу популярність, і слово «сайт» міцно увійшло в наш лексикон.
Останнім же часом за ручку з цим словом постійно ходять ще два - це «розробка» і «просування». І це не дивно, адже під пресом неймовірної кількості різних пропозицій в наданні послуг з розробці і просуванню сайтів в мозку рядового користувача ці два поняття вкоренилися як єдині заслуговують уваги при запуску інтернет-проекту.
Але є ще одне слово, без якого ні створення, ні просування, ніщо взагалі не матиме сенсу, якщо ви створюєте серйозний проект. Більш того, якщо ви будете нехтувати цим словом, ваші справи можуть виявитися набагато гірше, ніж це було раніше.
Мова йде про безпеку, причому не про фізичну безпеку комп'ютера, на якому зберігається ваш сайт, про яку, звичайно, теж варто подбати, а про безпеки в мережі Інтернет.
Складно переоцінити важливість питань безпеки вашого сайту, якщо в його базі даних зберігаються важливі відомості. Так, наприклад, складно собі уявити, що керівник ІТ-відділу в будь-якому великому банку, в базі даних якого зберігаються номери кредитних карт його клієнтів та інша важлива інформація, зможе спокійно спати вночі, якщо йому напередодні повідомити, що сайт банку, за який той несе відповідальність, не захищений належним чином і може бути зламаний протягом години мало-мальськи тямущим хакером.
А адже найчастіше все саме так! Більше того, навіть захищений спеціальними функціями код сайту, обмежена дозволами на доступ до інформації база даних і співробітник, відповідальний за безпека ваших даних з високим окладом не завжди зможуть гарантувати вам стовідсотковий захист. Саме тому, щоб потім не було боляче, необхідно вкрай ретельно організовувати систему захисту даних.
У даній статті я торкнуся тему захисту від, можливо, самого поширеного методу злому сайту - SQL-ін'єкції. Для початку визначимося з тим, що всі без винятку сучасні об'ємні, складні сайти будуються на основі бази даних.
Робота з даними, що зберігаються в базі даних вашого сайту, здійснюється за допомогою структурного мови запитів SQL. SQL-ін'єкція - техніка впровадження у вихідний SQL-запит певного коду, не порушує структури самого запиту, з метою отримання доступу до даних, що містяться в БД.
Можливість впровадження SQL-ін'єкції виникає внаслідок недостатньої перевірки прийнятих від користувача значень. Впровадження SQL-ін'єкції, залежно від типу СУБД і умов запровадження, може дати можливість атакуючому виконати довільний запит до бази даних - наприклад, прочитати вміст будь-яких таблиць, видалити, змінити або додати дані, отримати можливість читання та / або запису локальних файлів і виконання довільних команд на атакується сервері.
Більшість SQL-ін'єкцій застосовується у формах введення, таких як реєстрація користувача, передплата, замовлення товару і т.д. Але не варто помилятися щодо того, що мова йде тільки про видимих формах введення. Дуже часто для проникнення коду SQL-ін'єкції використовується URL сайту. Таким чином, якщо ваш сайт ніяк не захищений від проникнення, зломщик без зусиль зможе підібрати ключі до вашої базі даних і отримати будь-яку інформацію, яка в ній зберігається.
Отже, перейдемо безпосередньо до методам захисту вашого сайту від SQL-ін'єкції:
1. Не довіряйте даними, які вводить користувач у форму на вашому сайті. Всі ці дані необхідно перевіряти на наявність в них шкідливого коду. Для цього, по-перше, варто обмежувати довжину полів там, де це можливо. Наприклад, для рядка «Ім'я» цілком вистачить 10 символів.
Обробляйте спеціальними функціями всі дані, одержувані від користувача. При використанні PHP тут підійдуть функції mysql_real_escape_string () (екранує слеші заборонені символи типу ', "), Htmlspecialchars () (перетворює заборонені html дескриптори). Також тут можна перевіряти тип вводяться значень, наприклад, за допомогою intval () для чисельних значень.
2. Обмежуйте користувачів в правах на доступ до бази даних. Чим менше прав у користувача, тим менше шкоди буде в разі впровадження SQL-ін'єкції.
3. Принцип впровадження SQL-ін'єкції полягає в тому, що зломщик вгадує структуру ваших запитів до БД, підбирає можливі імена таблиць і стовпців цієї бази і на основі отриманої інформації витягує дані. Так, наприклад, намагаючись отримати доступ до таблиці паролів вашої бази даних, він буде підбирати імена типу pass, password, users і т.д. Тому, навряд чи йому вдасться витягти з даної таблиці інформацію, якщо ви назвете її «aslfjsaf». Однак даний метод надто радикальний, так як ускладнить роботу з БД особисто вам - через неінформативності імен.
Розглянуті в даній статті методи захисту допоможуть вам убезпечити свій сайт від хакерів, проте в умовах реального проекту в жодному разі не варто ними обмежуватися, так як ця стаття має лише ознайомлювальний характер і не може розповісти про всі способи і методи захисту даних.
Головне, що вам необхідно зрозуміти, - це важливість питань безпеки вашого сайту, про це ні в якому разі не можна забувати. Довіряйте захист вашого сайту професіоналам і спіть спокійно!