Page 179 - 4636
P. 179

Інтернет-адресах,  слід  використовувати  функцію  urlencode(),  що  виконує  безпечне  кодування
        подібних символів.
              Однак із цим підходом позв'язано ще кілька проблем. Оскільки дані аутентифікації будуть наявні
        у веб-сторінках, що відправляються відвідувачеві, захищені сторінки, які відвідав користувач, може
        переглянути будь-яка людина, що працюа за тим самим комп'ютером. Для цього досить переглянути
        кешування  копії  сторінок  або  заглянути  в  список  відвіданих  сторінок  браузера.  Оскільки  пароль
        пересилається  в  браузер  і  назад  разом  з  кожною  запитаною  або  наданою  сторінкою,  секретна
        інформація передається частіше, ніж це необхідно.
              Розв'язати ці проблеми можна за допомогою двох механізмів — базової Нттр-Аутентифікації й
        сеансів.  Базова  аутентифікація  дозволяє  розв'язати  проблему  кешування,  але  браузер  однаково
        відправляє  пароль  серверу  в  кожному  запиті.  Керування  сеансами  дозволяє  розв'язати  обидві
        проблеми.

              10.6 Базова аутентифікація

              На  щастя,  аутентифікація  користувачів  —  це  досить  розповсюдженезавдання,  і  можливості
        аутентифікації  вбудовані  до  протоколу  HTTP.  Сценарії  й  веб-сервери  можуть  запитувати
        аутентифікацію у веб-браузера. Після цього веб-браузер повинен вивести на екран діалогове вікно або
        щось подібне й запросити в користувача необхідну інформацію.
              Хоча  веб-сервер  запитує  нові  відомості  аутентифікації  в  кожному  запиті  користувача,  веб-
        браузеру немає необхідності запитувати цю інформацію для кожної сторінки. Загалом випадку браузер
        зберігає  відомості  аутентифікації  доти,  поки  відкрите  його  вікно,  і  автоматично  відправляє  їх  без
        втручання з боку користувача.
              Ця  властивість  протоколу  HTTP  називається  базовою  аутентифікацією  (basic  authentication).
        Базову  аутентифікацію можна включити засобами РНР або за допомогою механізмів, вбудованих  у
        веб-сервер. Нижче ми розглянемо методи з використанням РНР, а потім методи сервера Apache.
              Базова аутентифікація передає ім'я користувача й пароль у вигляді відкритого тексту й тому не
        особливо безпечна. Протокол HTTP 1.1 надає більш безпечний метод, називаний аутентифікацією за
        допомогою  дайджесту  (digest  authentication).  Цей  метод  використовує  алгоритм  хешування  (як
        правило,  MD5)  для  приховання  подробиць  виконання  транзакції.  Аутентифікація  за  допомогою
        дайджесту  підтримується  багатьма  веб-серверами  й  більшістю  сучасних  браузерів.  На  жаль,  її  не
        підтримують  багато  застарілих  браузерів,  які  усе  ще  перебувають  у  вживанні,  і,  крім  того,  версія
        стандарту,  реалізована  в  Microsoft  Internet  Explorer  і  Internet  Information  Server,  не  сумісна  із
        продуктами інших компаній.
              На  додаток  до  дуже  слабкої  підтримки  незначною  кількістю  браузерів,  аутентифікація  за
        допомогою дайджесту не дуже  безпечна. І базова, і  дайджест-аутентифікація забезпечують низький
        рівень  захисту.  Жоден  із  цих  методів  не  дає  користувачеві  гарантій,  що  він  працює  саме  з  тим
        комп'ютером,  доступ  до  якого  він  планував  одержати.  Обидва  методи  дозволяють  зломщикові
        повторити  той  же  запит  серверу.  Оскільки  базова  аутентифікація  передає  пароль  користувача  у
        відкритому вигляді, будь-який зломщик, здатний перехоплювати пакети, може зімітувати будь-який
        запит користувача.
              Базова  аутентифікація  забезпечує  (низький)  рівень  захисту,  подібний  до  того,  який
        забезпечується при підключенні за протоколом Telnet або FTP. Ці методи також передають паролі у
        вигляді  простого  тексту.  Аутентифікація  за  допомогою  дайджесту  трохи  безпечніша,  оскільки  вона
        шифрує паролі перед передачею.
              І  лише  комбінація  базової  аутентифікації  із  протоколом  SSL  і  цифровими  сертифікатами
        дозволяє  надійно  захистити  всі  частини  транзакцій  у  Сеги.  Однак  у  багатьох  ситуаціях  найбільш
        придатним буде швидкий, хоча й відносно незахищений метод, такий як базова аутентифікація.
              Базова аутентифікація дозволяє захистити іменовані зони й вимагає від користувачів  уведення
        правильного імені і пароля. Через те, що зони іменовані, на одному сервері може існувати безліч зон.
        Різні  файли  й  каталоги  на  одному  сервері  можуть  належати  різним  зонам,  кожна  з  яких  захищена


                                                            176
   174   175   176   177   178   179   180   181   182   183   184