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

Трансляция полей формы. Метод аутентификации в Web как требование к посетителям предоставить имя пользователя и пароль. Форма для передачи данных. Использование базу данных для хранения паролей. Разработка сценарий для аутентификации посетителей.

Рубрика Программирование, компьютеры и кибернетика
Вид лекция
Язык русский
Дата добавления 27.04.2009
Размер файла 225,0 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

АУТЕНТИФИКАЦИЯ ПОЛЬЗОВАТЕЛЕЙ

Лекция

Подготовлена Прохоровым В.С.

Просьба к пользователю доказать свою личность называется аутентификацией.

Обычный метод аутентификации в Web -- это требование к посетителям предоставить уникальное имя пользователя и пароль. Аутентификация используется для разрешения или запрещения доступа к определенным страницам или ресурсам. Аутентификация может быть необязательной либо использоваться для других целей, например, для персонализации.

1. Форма для передачи данных

Пользователь может в удобной форме ввести уникальное имя и пароль с помощью HTML-документа index.html с элементами диалога -- текстовыми полями и кнопкой.

Листинг index.html. Страница с формой

<html>

<head>

<title>АУТЕНТИФИКАЦИЯ ПОЛЬЗОВАТЕЛЯ</title>

</head>

<body>

<h1>Пожалуйста зарегистрируйтесь</h1>

<p>Зарегистрировавшись, Вы получите доступ к защищенной странице.</p>

<p>Имя и Пароль можно получить у администратора.</p>

<form action=hello.php>

Имя: <input type=text name=login> <br>

Пароль: <input type=password name=pass> <br>

<input type=submit vа1ue = Отправить><br>

</form>

</body>

</html>

После того как пользователь заполнит текстовые поля и нажмет кнопку «Отправить», браузер обратится к сценарию hello.php и передаст их в строке параметров. В атрибуте action тега <form> задан относительный путь, т. е. сценарий hello.php будет искаться браузером в том же самом каталоге, что и файл form.html.

Осталось определиться, как можно извлечь $login и $pass из строки параметров.

2. Трансляция полей формы

Независимо от того, каким методом -- get или post -- воспользовался браузер, РНР сам определяет, какой метод был задействован.

Все данные из полей формы РНР помещает в глобальный массив $_REQUEST.

Значение поля login будет храниться в $_REQUEST['login'], а значение поля pass -- в $_REQUEST['pass'].

Чтобы можно было как-то разделить GET-параметры от POST-данных, РНР также создает массивы $_GET и $_POST, заполняя их соответствующими значениями. Массив $_REQUEST представляет собой объединение этих двух массивов.

Листинг hello.php - сценарий извлечения текста из полей формы

<?php

if ($_REQUEST['login']=="root" && $_REQUEST['pass']=="Z10N0101")

{

echo "Доступ открыт для пользователя $_REQUEST[login]";

}

else

{

echo "Доступ закрыт! При вводе данных была совершена ошибка. Для исправления ошибки нужно вернуться <a href=index.html>назад</a>";

}

?>

При создании сценария извлечения текста из полей формы hello.php применена инструкция if-else.

Инструкция if-else -- условный оператор. Его формат таков:

if (логическое_выражение)

инструкция_1;

else

инструкция_2;

Действие инструкции следующее: если логическое_выражение истинно, то выполняется инструкция_1, а иначе -- инструкция_2.

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

Если при вводе данных будет совершена ошибка, например, неправильно введен пароль, то доступ будет закрыт:

Рассмотренный код, реализует простой механизм, позволяющий санкционированным посетителям видеть защищенную страницу.

Этот сценарий:

? поддерживает только одно жестко закодированное имя пользователя и пароль;

? хранит пароль в виде простого текста;

? защищает только одну страницу;

? передает пароль в виде простого текста.

3. Хранение паролей

Для хранения паролей лучше применить базу данных. Если планируется сохранять большое количество элементов в файле или производить поиск в рамках большого числа элементов, то следует рассмотреть возможность использования базы данных вместо двумерного файла.

Практический метод выбора между файлом и базой данных гласит: если вы собираетесь хранить и производить поиск в более чем 100 элементах, следует отдать предпочтение базе данных.

Использование базы данных для хранения имен и паролей посетителей позволяет быстро проводить аутентификацию множества пользователей. Это также упрощает создание сценария для добавления и удаления пользователей, а также дает возможность пользователям изменять свои пароли.

Разработаем сценарий для аутентификации посетителей страницы с использованием базы данных.

Базу данных auth и таблицу auth в ней можно создать, подключившись к MySQL как пользователь root и запустив показанный в листинге create_db.php сценарий.

Листинг create_db.php --запросы для создания базы данных auth с таблицей auth

<?

//Создаем базу данных MySQL

//Открыть постоянное соединение с с MySQL-сервером, сервер localhost,

//имя пользователя root, пустой пароль

$link = mysql_pconnect("localhost", "root", "")

or exit("Соединение с MySQL-сервером не создано");

//отправляем запрос текущей активной БД на сервере и

//и создаем базу данных auth

$result=mysql_query("create database auth");

if(!$result) echo"База данных не создана";

//Выбираем БД MySQL auth

$result=mysql_select_db("auth");

if(!$result) echo"База данных не выбрана";

//отправляем MySQL-запрос/query и

//создаем таблицу auth в базе данных auth

$result=mysql_query("create table auth

(

name varchar(16) NOT NULL '',

pass varchar(16) NOT NULL '',

PRIMARY KEY (name)

)TYPE=MyISAM");

if($result) echo "Таблица auth создана<br>";

//отправляем запрос текущей активной БД на сервере и

//создаем список привилегий,

//которые могут быть применены ко всем таблицам базы данных auth

//пользователем admin с хоста localhost с паролем 12345

$result=mysql_query("grant select, insert, update, delete

on auth.*

to admin@localhost identified by '12345';

");

if($result) echo "Привилегии созданы";

?>

Далее следует определить пользователей, которым будет предоставлен доступ к защищенным ресурсам. Для этого нужно присвоить им login и pass. Создадим двух таких пользователей (оставим прежнего root и добавим нового testuser):

use auth;

insert into auth values

('root', 'Z10N0101');

insert into auth values

('testuser', 'test123');

Листинг index_1.html - страница с формой для улучшения механизма аутентификации из-за применения MySQL.

<html>

<head>

<title>АУТЕНТИФИКАЦИЯ ПОЛЬЗОВАТЕЛЯ MySQL </title>

</head>

<body>

<h1>Пожалуйста зарегистрируйтесь</h1>

<p>Зарегистрировавшись, Вы получите доступ к защищенной странице.</p>

<p>Имя и Пароль можно получить у администратора.</p>

<form method=post action=secretdb.php>

Имя: <input type=text name=login> <br>

Пароль: <input type=password name=pass> <br>

<input type=submit vа1ue = Отправить><br>

</form>

</body>

</html>

Листинг secretdb.php -- сценарий извлечения текста из полей формы и сравнение его с текстом из базы данных

<?

if(!isset($_POST['login'])&&!isset($_POST['pass']))

{

//Посетитель должен ввести имя и пароль

?>

<html>

<head>

<title>АУТЕНТИФИКАЦИЯ ПОЛЬЗОВАТЕЛЯ MySQL </title>

</head>

<body>

<h1>Пожалуйста зарегистрируйтесь</h1>

<p>Зарегистрировавшись, Вы получите доступ к защищенной странице.</p>

<p>Имя и Пароль можно получить у администратора.</p>

<form method=post action=secretdb.php>

Имя: <input type=text name=login> <br>

Пароль: <input type=password name=pass> <br>

<input type=submit vа1ue = Отправить><br>

</form>

</body>

</html>

<?

}

else

{

//Подключиться к MySQL

$mysql=mysql_connect('localhost','root','');

if(!$mysql)

{

echo 'К базе данных не удалось подключиться.';

exit;

}

//Выбрать нужную базу данных

$mysql = mysql_select_db( 'auth' );

if(!$mysql)

{

echo 'Нужную базу данных не удалось выбрать.';

exit;

}

//Запрос к базе данных для проверки, существует ли соответствующая запись

$query = "select count(*) from auth where

login = $_POST['login'] and

pass = $_POST['pass']";

$result = mysql_query($query);

if(!$result)

{

echo 'Запрос к базе данных не может быть осуществлен.';

exit;

}

$count = mysql_result( $result, 0, 0 );

if ( $count > 0 )

{

//Комбинация имени и пароля посетителя правильная

echo "<h1> Эта страница для зарегистрированных пользователей!</h1>";

echo " Мы рады тому, что Вы посетили нашу страничку.";

}

else

{

// Комбинация имени и пароля посетителя неправильная

echo "<h1> ВНИМАНИЕ!</h1>";

echo " Вы ввели неправильно имя и пароль.";

}

}

?>

Проверка того, что пользователь ввел данные, осуществляется функцией isset.

При создании сценария извлечения текста из полей формы hello.php применена инструкция if-else.

Инструкция if-else -- условный оператор. Его формат таков:

if (логическое_выражение)

инструкция_1;

else

инструкция_2;

Действие инструкции следующее: если логическое_выражение истинно, то выполняется инструкция_1, а иначе -- инструкция_2.

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

В качестве логического выражения применена логическая функция isset, которая проверяет, установлена ли переменная, логический оператор для проверки булевых условий НЕ (!) и И (and или &&):

(!isset($_POST ['login'])&&!isset($_POST ['pass']))

Листинг secretdb.php -- применение MySQL для улучшения механизма аутентификации.

<?

$name = $_POST['name']

$password = $_POST['password']

if(!isset($name)&&!isset($password))

{

//Если имя и пароль не существуют, посетитель должен зарегистрироваться, т.е. ввести имя и пароль

?>

<h1>Пожалуйста зарегистрируйтесь</h1>

<p>Зарегистрировавшись, Вы получите доступ к защищенной странице.</p>

<form method = post action = "secretdb.php">

<table border = 1>

<tr>

<th>Имя</th>

<td> <input type = text name = name> </td>

</tr>

<tr>

<th>Пароль</th>

<td> <input type = password name = password> </td>

</tr>

<tr>

<td colspan =2 align = center>

<input type = submit value = "Вход">

</td>

</tr>

</table>

</form>

<?

}

else

{

//Подключиться к MySQL

$mysql = mysql_connect( 'localhost', 'root', '' );

if(!$mysql)

{

echo ' К базе данных не удалось подключиться.';

exit;

}

//Выбрать нужную базу данных

$mysql = mysql_select_db( 'auth' );

if(!$mysql)

{

echo ' Нужную базу данных не удалось выбрать.';

exit;

}

//Запрос к базе данных, чтобы проверить, существует ли соответствующая запись

$query = "select count(*) from auth where

name = '$name' and

pass = '$password'";

$result = mysql_query( $query );

if(!$result)

{

echo ' Запрос к базе данных не может быть осуществлен.';

exit;

}

$count = mysql_result( $result, 0, 0 );

if ( $count > 0 )

{

//Комбинация имени и пароля посетителя правильная

echo "<h1> Эта страница для зарегистрированных пользователей!</h1>";

echo " Мы рады тому, что Вы посетили нашу страничку.";

}

else

{

// Комбинация имени и пароля посетителя неправильная

echo "<h1> ВНИМАНИЕ!</h1>";

echo " Вы ввели неправильно имя и пароль.";

}

}

?>

Используемую в примере базу данных можно создать, подключившись к MySQL как пользователь root и запустив показанный в листинге 14.3 сценарий.

Листинг 14.3. createauthdb.php --запросы для создания базы данных auth, таблицы auth и двоих пользователей.

create database auth;

use auth;

create table auth (

name varchar(10) not null,

pass varchar(30) not null,

primary key (name)

);

insert into auth values

('user', 'pass');

insert into auth values

( 'testuser', password('test123') );

grant select, insert, update, delete

on auth.*

to webauth@localhost

identified by 'webauth';


Подобные документы

  • Проблемы использования паролей на предприятии. Общие понятия и технологии идентификации и аутентификации. Принцип работы и структура программного средства SecureLogin от компании ActiveIdentity. Автоматическая генерация пароля, фишинг и фарминг.

    курсовая работа [2,5 M], добавлен 22.01.2015

  • Использование электронных ключей как средства аутентификации пользователей. Анализ методов идентификации и аутентификации с точки зрения применяемых в них технологий. Установка и настройка средств аутентификации "Rutoken", управление драйверами.

    курсовая работа [4,6 M], добавлен 11.01.2013

  • Разработка предложений по внедрению биометрической аутентификации пользователей линейной вычислительной сети. Сущность и характеристика статических и динамических методов аутентификации пользователей. Методы устранения угроз, параметры службы защиты.

    курсовая работа [347,3 K], добавлен 25.04.2014

  • Обеспечение безопасности сетевого соединения. Процесс аутентификации при установке соединения и процесс передачи данных. Использование криптостойкого шифрования. Протокол аутентификации Kerberos. Основные этапы процедуры аутентификации клиента.

    презентация [162,8 K], добавлен 10.09.2013

  • Понятие безопасности данных. Базовые технологии сетевой аутентификации информации на основе многоразового и одноразового паролей: авторизация доступа, аудит. Сертифицирующие центры, инфраструктура с открытыми ключами, цифровая подпись, программные коды.

    курсовая работа [861,3 K], добавлен 23.12.2014

  • Разработка подключаемых модулей аутентификации как средства аутентификации пользователей. Модуль Linux-PAM в составе дистрибутивов Linux. Принцип работы, администрирование, ограничение по времени и ресурсам. Обзор подключаемых модулей аутентификации.

    курсовая работа [192,0 K], добавлен 29.01.2011

  • Общие принципы аутентификации в Windows. Локальная и доменная регистрация. Аутентификация в Linux. Права доступа к файлам и реестру. Транзакции, примитивы, цепочки и политики. Основные компоненты дескриптора защиты. Хранение и шифрование паролей.

    курсовая работа [62,6 K], добавлен 13.06.2013

  • Аутентификация пользователя при входе в систему: ввод пароля с клавиатуры, использование электронных ключей. Несанкционированные действия с информацией на ПК. Биометрические методы аутентификации. Физическое хищение компьютерных носителей информации.

    контрольная работа [4,7 M], добавлен 02.01.2018

  • Понятие процесса биометрической аутентификации. Технология и вероятность ошибок аутентификации по отпечатку пальца, радужной оболочке или по сетчатке глаза, по геометрии руки и лица человека, по термограмме лица, по голосу, по рукописному почерку.

    презентация [1,2 M], добавлен 03.05.2014

  • Знакомство с возможностями перехвата пароля при аутентификации в почтовых системах. Характеристика почтовой программы "The Bat!", анализ способов настройки и проверки работоспособности. Рассмотрение распространенных методов защиты от перехвата пароля.

    контрольная работа [1,1 M], добавлен 19.05.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.