П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 175020 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 71984 раз(а).

Учебник HTML.
Просмотров 72071 раз(а).

Руководство по PHP5.
Просмотров 42683 раз(а).

Хостинг через призму DNS.
Просмотров 49171 раз(а).

Подборка текстов стандартных документов.
Просмотров 43113 раз(а).

Учебник PHP - Самоучитель
Просмотров 49450 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 49697 раз(а).

Внешние атаки...
Просмотров 40243 раз(а).

Учебник PHP.
Просмотров 35272 раз(а).

SSI в примерах.
Просмотров 26553 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь




ГЛАВА 16. Безопасность.

Аутентификация пользователя

Правильно введенные имя и пароль открывают пользователю доступ к каталогам сервера, недоступным для анонимного доступа. Этот принцип аутентификации обычно называется схемой «запрос/ответ» (challenge/response). Запросом является приглашение к вводу имени и пароля, а ответом — введенные данные. Если введенная комбинация верна, пользователю предоставляется доступ к защищенным каталогам; в противном случае попытка получения доступа отклоняется с выводом соответствующего сообщения.

Как правило, для ввода имени и пароля применяются диалоговые окна, активизируемые вызовом функции header() (листинг 16.2).

Листинг 16.2. Запрос данных для аутентификации пользователя

<?

header('WWW-Authenticate: Basic realm="Secret Family Recipes"'); header('HTTP/1.0 401 Unauthorized'); exit; ?>

Выполнение фрагмента из листинга 16.2 всего лишь активизирует окно для ввода данных. Примерный вид этого окна изображен на рис. 16.1.

Рис. 16.1. Окно аутентификации пользователя

Следующим шагом после подготовки интерфейса для ввода является обработка имени пользователя и пароля. В РНР имя и пароль хранятся в двух глобальных переменных, $PHP_AUTH_USER (имя) и $PHP_AUTH_PW (пароль). В листинге 16.3 показано, как проверяются значения этих переменных. Если данные не были введены, окно аутентификации отображается заново.

Экспериментируя со сценариями этого раздела, вы увидите, что окно аутентификации не всегда появляется после обновления страницы. Проблема кроется не в программе, а в том, как окна аутентификации реализованы в браузере. Чтобы вызвать окно, вам придется закрыть и перезапустить браузер.

Листинг 16.3. Проверка глобальных переменных аутентификации в РНР

<? 

If ( (! isset ($PHP_AUTH_USER)) || (! isset ($PHP_AUTH_PW)) ):
  header('WWW-Authenticate: Basic realm="Secret Family Recipes"');
  header('HTTP/1.0 401 Unauthorized');
  print "You are attempting to enter a restricted area. Authorization is required.";
  exit; 
endif; 

?> 

В простейшей, но недостаточно гибкой схеме ограничения доступа к странице имя пользователя и пароль жестко кодируются в сценарии. В листинге 16.4 приведен вариант предыдущего примера, построенный с использованием этой схемы.

Листинг 16.4. Жесткое кодирование имени и пароля в сценарии

<? 

if ( (! isset 
($PHP_AUTH_USER)) || (! isset ($PHP_AUTH_PW)) || ($РНР AUTH USER != 'secret') || 
($PHP_AUTH_PW !- 'recipes') ) :

  header('WWW-Authenticate: Basic realm="Secret Family Recipes"'); 
  header('HTTP/1.0 401 Unauthorized');
  print "You are attempting to enter a restricted area. Authorization is required"
  exit; 

endif; 

?> 

Назад | Содержание раздела | Общее Содержание | Вперед



Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
 





Copyright © 2005-2016 Project.Net.Ru