![]() |
|
||||||||||||||
|
|
|
Организация парольной защиты целиком и полностью ложится на плечи программиста. Разработчик должен сам обеспечить безопасность хранения списков пользователей, проверку логинов/паролей, сохранение контекстов безопасности и их повторное использование. Под контекстом безопасности здесь понимается набор параметров, однозначно определяющих пользователя (как минимум это логин, пароль и идентификатор сессии). Рассмотри пример реализации простейшей парольной защиты. Создадим файл logon.php <div>
<?php
$login = isset($_GET['login'])?$_GET['login']:'';
$passwd = isset($_GET['passwd'])?$_GET['passwd']:'';
if($login != '' || $passwd != '')
{
if($login == 'admin' && $passwd == 'megaPass')
echo 'Доступ разрешен';
else
echo 'Доступ запрещен!';
}
else
echo 'Введите логин и пароль';
?>
</div>
<form action="logon.php" method="get">
<input type="text" value="" name="login" />
<input type="password" value="" name="passwd" />
<input type="submit" value="вход" />
</form>
При нажатии на кнопку "вход" данные формы будут отправлены на сервер, там скрипт проверит введённые логин и пароль и если они равны "admin" и "megaPass" соответственно - отобразит сообщение, что вход разрешен. Если логин или пароль не верны - пользователь увидит предупреждающее сообщение. Первый недостаток этого скрипта: передача данных методом GET. При использовании этого метода данные передаются непосредственно в адресе, а значит видны даже невооруженным глазом. Например, если вы ввели правильные логин и пароль, то в адресной строке увидите http://localhost/logon.php?login=admin&passwd=megaPass Второй недостаток: имена пользователей и пароли зашиты прямо в код. Это значит, что для добавления новых пользователей вам надо будет постоянно менять код файла. А представьте себе, какого размера будет файл, если у вас на сайте хотя-бы тысяча зарегистрированных пользователей... Списки пользователей лучше всего хранить в отдельном файле, а лучше в базе данных, т.к. злоумышленнику файл украсть намного проще, чем добывать что-то из базы данных. Третий недостаток: результаты входа пользователя не запоминаются, т.е. достаточно обновить страницу и вас снова попросят ввести пароль. Итак, рассмотрим способы устранения этих недостатков. Скрыть передаваемые данные проще всего используя метод передачи POST. В этом случае браузер сам (скрытно от пользователя) передаст серверу все необходимые данные и перехватить их можно будет только специальными программами из арсенала IT-специалистов, программистов или хакеров. Как говорилось выше, списки пользователей надо хранить отдельно. Создадим таблицу в тестовой базе данных: CREATE TABLE `smplusers` ( и добавим в неё несколько записей пользователей: INSERT INTO smplUsers Обратите внимание, что оператор INSERT допускает одновременное добавление в таблицу сразу нескольких записей, при этом данные перечисляются блоками через запятую. Теперь изменим logon.php таким образом, чтобы имя пользователя и пароль корректно проверялись непосредственно в базе данных: <?php Теперь логин и пароль передаются скрытно, а учётные данные очень просто изменить, отредактировав таблицу в базе данных. Остался последний штрих - научить сервер запоминать факт регистрации. Проще всего сделать это при помощи механизма сессий. Внесём необходимые изменения: <?php // открываем сессию Теперь сервер будет запоминать каждого пользователя, успешно вошедшего в систему, а при следующем обновлении страницы будет выводиться приветственное сообщение. Это скрипт - лишь пример организации парольной защиты, пусть и вполне функциональный. Сделать из него практически ценный образец можно, добавив проверку вводимых данных, функции шифрования, восстановения пароля, завершения сессии и др. |
|
|
Спасибо, что заглянули на сайт. Надеюсь, Вам понравилось. Заходите еще. Здесь всегда рады вам :) |
|
© 2005-2012 |
E-mail: |