Page 176 - 4636
P. 176

type="text" name="name"x/p><р>Пароль:  <input,type="password"
              name="password"x/p><p><input type="submit" name="submit"
              value="Bohth"x/p></form><?php
              ( else if(($name = "user")  SS  ($password == "pass"))   ( //
              Комбінація імені й пароля відвідувача вірна echo "<М>Ви на місці
              !</hl>"  .
              "<р>Ви напевно щасливі оглянути цю секретну сторінку</р>"; ) else  I
              // Комбінація імені й пароля відвідувача невірна echo "<Ь1>Кыш
              звідси!</hl>"  .
              "<р>Вам не дозволено переглядати даний ресурс</р>"; ) ?>
              Код  у  лістингу10.1  реалізує  простий  механізм  аутентифікації,  що  дозволяє  санкціонованим
        відвідувачам бачити захищену сторінку, однак він містить кілька істотних проблем.
              Описаний сценарій:
                підтримує тільки одне жорстко закодоване ім'я користувача й пароль;
                зберігає пароль у вигляді відкритого тексту;
                захищає тільки одну сторінку;
                передає пароль у вигляді відкритого тексту.
              Ці проблеми можна вирішити, доклавши певні зусилля та домагаючись успіхів.

              10.3 Зберігання паролів

              Для зберігання паролів існує безліч місць, які більш підходять, ніж код сценарію. Дані усередині
        сценарію  дуже  важко  змінювати.  Можна  написати  сценарій,  який  буде  змінювати  себе,  але  це  не
        особливо вдала ідея. При цьому на сервері прийдеться зберігати сценарій, що виконується на ньому,
        доступний для запису й змін з боку  інших користувачів. Зберігання паролів на сервері в окремому
        файлі дозволить без особливих зусиль написати програму для додавання й видалення користувачів, а
        також для зміни паролів.
              Усередині сценарію або  іншого файлу даних  існує обмеження на кількість користувачів, яких
        можна обслуговувати без серйозного зниження загальної продуктивності сценарію. Якщо планується
        зберігати велику кількість елементів у файлі або робити пошук серед великої кількості елементів, те,
        як було сказано раніше, слід розглянути можливість використання бази даних замість двовимірного
        файлу. Як практичну пораду можна прийняти таке твердження: якщо ви має намір зберігати й робити
        пошук у більш ніж 100 елементах, слід віддати перевага у базі даних.
              Використання  бази  даних  для  зберігання  імен  і  паролів  не  сильно  ускладнить  сценарій,  але
        дозволить швидко проводити аутентифікацію безлічі користувачів. Крім того, це спростить створення
        сценарію для додавання й видалення користувачів, а також дасть можливість користувачам змінювати
        свої паролі.
              Сценарій  для  аутентификации  відвідувачів  сторінки  з  використанням  бази  даних  показано  в
        лістингу 10.2.
              Лістинг  10.2.  secretdb.php  —  удосконалення  простого  механізму  аутентифікації  за
        допомогою Mysql
           <?php $name = $_P0ST['name' ] ; $password = $_P0ST['password'];
           if  ((!isset($_POST['name'l)) II(lisset($_P0ST['password']))) {
           // Відвідувач повинен увести ім'я й пароль ?>
           <Ы>Уведіть своє ім'я й пароль</Ы>
           <р>Це секретна сторінка</р>
           <form method="post" action="secretdb.php"><р>Ім'я користувача:  <input
           type="text" name="name"x/p><р>Пароль:  <input type="password"
           name="password"x/p><pxinput type="submit" name="submit"
           уа1ие="Увійти"х/р>
           </form>
           ( else { // Підключення до mysql
                                                            173
   171   172   173   174   175   176   177   178   179   180   181