Безопасность: аутентификация с помощью форм
Хранение удостоверений в конфигурационном файле
Хоть это и не самый лучший способ хранения удостоверений пользователей, зато самый простой. Вообще, удостоверения можно хранить где угодно, только нужно предусмотреть соответствующий код их сравнения с введенными на странице регистрации данными. Если удостоверения хранятся в файле web.config, то их нужно помещать в дочерний для <forms> дескриптор <credentials>. Вот пример для трех пользователей
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<compilation debug="true" />
<authentication mode="Forms">
<forms
name="MyCookieName"
loginUrl="MyLogin.aspx"
timeout="20"
slidingExpiration="true"
cookieless="AutoDetect"
protection="All"
requireSSL="false"
enableCrossAppRedirects="false"
defaultUrl="MyDefault.aspx"
domain=""
path="/"
>
<credentials passwordFormat="Clear">
<user name="Admin" password="Root" />
<user name="Petja" password="Xa-xa" />
<user name="Vasja" password="Xo-xo" />
</credentials>
</forms>
</authentication>
</system.web>
</configuration>
Листинг
37.2.
Пример хранения удостоверений в конфигурационном файле
Упражнение 1. Управление доступом анонимных пользователей
Рассмотрим пример ограничения доступа к страницам сайта с помощью аутентификации форм и хранением удостоверений в конфигурационном файле. Пользователей в конфигурационный файл можно добавлять как декларативно, непосредственно редактируя секцию <credentials>, так и программно.
-
Создайте
пустой проект Web-приложения командой File/New/Web Site с
именем Login
-
Добавьте
к приложению корневой конфигурационный файл Web.config,
выполнив команду Website/Add New Item
-
Заполните
конфигурационный файл кодом настройки аутентификации форм
и декларативным созданием пользователей
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<compilation debug="true" />
<authentication mode="Forms">
<forms
name="MyCookieName"
loginUrl="MyLogin.aspx"
defaultUrl="MyDefault.aspx"
protection="All"
timeout="20"
path="/"
requireSSL="false"
slidingExpiration="true"
cookieless="AutoDetect"
domain=""
enableCrossAppRedirects="false">
<credentials passwordFormat="Clear">
<user name="Admin" password="Root" />
<user name="Петя" password="Уф&Уф" />
<user name="Вася" password='!$-*?"' />
</credentials>
</forms>
</authentication>
</system.web>
</configuration>
Листинг
37.3.
Код конфигурационного файла
Значение атрибута passwordFormat="Clear" обеспечивает открытое хранение пользователей в конфигурационном файле без всякого шифрования. Этот параметр применяется в надежде на то, что система автоматически ограничивает доступ конечных пользователей к конфигурационным файлам и что эти секретные данные никто не увидит. Но администратор сайта имеет доступ к конфигурационным файлам сайта, да и продвинутые злоумышленники тоже могут добраться до этой информации, обойдя защиту системы. Поэтому существуют встроенные алгоритмы хеширования ( MD5, SHA1 ), использование которых мы рассмотрим чуть позже.

