Опубликован: 13.07.2010 | Доступ: свободный | Студентов: 891 / 20 | Оценка: 4.40 / 4.20 | Длительность: 77:34:00
Самостоятельная работа 37:

Безопасность: аутентификация с помощью форм

< Самостоятельная работа 36 || Самостоятельная работа 37: 12345678

Хранение удостоверений в конфигурационном файле

Хоть это и не самый лучший способ хранения удостоверений пользователей, зато самый простой. Вообще, удостоверения можно хранить где угодно, только нужно предусмотреть соответствующий код их сравнения с введенными на странице регистрации данными. Если удостоверения хранятся в файле 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="Уф&amp;Уф" />
                    <user name="Вася" password='!$-*?"' />
                </credentials>
            </forms>
        </authentication>
    </system.web>
</configuration>
Листинг 37.3. Код конфигурационного файла

Значение атрибута passwordFormat="Clear" обеспечивает открытое хранение пользователей в конфигурационном файле без всякого шифрования. Этот параметр применяется в надежде на то, что система автоматически ограничивает доступ конечных пользователей к конфигурационным файлам и что эти секретные данные никто не увидит. Но администратор сайта имеет доступ к конфигурационным файлам сайта, да и продвинутые злоумышленники тоже могут добраться до этой информации, обойдя защиту системы. Поэтому существуют встроенные алгоритмы хеширования ( MD5, SHA1 ), использование которых мы рассмотрим чуть позже.

< Самостоятельная работа 36 || Самостоятельная работа 37: 12345678