Page 99 - 4636
P. 99
Навіть паролі на кшталт “44кискаА” не так безпечні, як паролі виду “FI93!!xl2@”. Якщо вас
хвилює питання, як же запам'ятати такий пароль, то спробуйте використати перші літери з якої-небудь
пропозиції з регулярним чергуванням рядкових і прописних букв - наприклад, пароль “нТгПуВрМ”
отримано пропозиції “Наша Таня голосно плаче: впустила в річку м'ячик”.Багато СУБД (в тому числі і
старі версії MySQL) встановлюються з анонімним користувачем, повноваження якого, можливо,
більше, ніж вам потрібно. Коли будете розглядати і освоювати систему прав доступу, обов'язково
перевірте, чи всі стандартні облікові записи роблять саме те, що вам треба.Забезпечте, щоб доступ до
таблиць прав доступу та адміністративних баз даних був тільки у облікового запису адміністратора.
Права доступу інших облікових записів повинні забезпечувати доступ лише до тих баз і таблиць, для
яких вони призначені. Для перевірки виконайте наступні дії і подивіться, чи виникнуть помилки.
підключіться без вказівки імені користувача і пароля;
підключіться як root без вказівки пароля;
введіть для облікового запису root неправильний пароль;
підключіться як звичайний користувач і спробуйте звернутися до таблиці, до якої цей
користувач не повинен мати права доступу;
підключіться як звичайний користувач і спробуйте звернутися до системних баз або таблиць
прав доступу.
Поки ви не виконаєте всі ці перевірки, ви не можете бути впевнені, що система аутентифікації
вашої системи надійно захищена.
Надсилання даних на сервер. Як ми неодноразово повторювали (і ще будемо повторювати) -
ніколи не надсилайте на сервер нефільтровані дані. Найпростіший рівень захисту забезпечує
використання різних функцій літералізації рядків, що надаються розширеннями СУБД (зразок
mysqli_real_escape_string або mssql_escape_string).Але, як ми не раз бачили, не
потрібно покладатися тільки на ці функції і виконувати перевірку типів для кожного поля форми
введення. Наприклад, для поля імені користувача необхідно перевірити, чи воно не містить кілобайти
даних або символи, які небажані в таких іменах. Подібна перевірка в коді може забезпечити для
користувачів більш докладні повідомлення про помилки і виключити деякі фактори ризику для
безпеки баз даних. Аналогічно, потрібно перевіряти коригування числових значень і дати/часу, перш
ніж передавати їх на сервер. І, нарешті, на тих серверах, де це можливо, можна використовувати
підготовлені оператори, які виконають за нас основну роботу по літералізації і забезпечать наявність
лапок скрізь, іде вони потрібні. Тут також можливі перевірки, виконання яких надасть нам
впевненість, що наша база правильно обробляє дані.
спробуйте ввести в полях форми значення зразок ’ ; delete from harmlesstable';
спробуйте ввести в полях, де потрібні числа або дати яку-небудь абра-кадабру зразок '
55#$888авс' - має з'явитися повідомлення про помилку;
спробуйте ввести дані, що виходять за вказані межі - повинно з'явитися повідомлення про
помилку.
Підключення до сервера. Є декілька способів захисту серверів баз даних за допомогою
управління підключеннями до них. Один з найпростіших - обмеження за місцем, звідки дозволено
підключення. Багато систем прав доступу, застосовувані в різних СУБД, дозволяють вказати для
користувача не лише його ім'я і пароль, але і комп'ютери, з яких йому дозволено підключатися. Якщо
сервер баз даних, веб-сервер та інтерпретатор РНР знаходяться на одній машині, то, природно, має
сенс дозволити тільки з'єднання з localhost або IP-адреси даної машини. Якщо веб-сервер завжди
знаходиться на одному і тому ж комп'ютері, то цілком нормально буде дозволити користувачам
підключатися до бази даних тільки з цього комп'ютера. Багато серверів баз даних мають можливість
шифрованих з'єднань до них (зазвичай з використанням протоколу SSL). Якщо вам потрібно
підключитися до сервера баз даних через відкритий Інтернет, обов'язково використовуйте
зашифроване підключення, якщо воно доступне. Якщо ж не доступне, спробуйте скористатися
тунелюванням - чудова ідея, коли дві машини з'єднуються захищеним підключенням, і TCP/IP-порти
(наприклад, порт 80 для HTTP або 25 для SMTP) маршрутизуються з цього захищеного підключення
до іншого комп'ютера, який бачить весь трафік як локальний.І, нарешті, слід забезпечити, що кількість
96