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

О проекте

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

MySQL

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

Хостинг

Другое








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

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

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

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

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

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

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

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

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

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

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

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



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



Масляный обогреватель цены Компания УралВентСервис.


ГЛАВА 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