-
-
у
ем
при добавлении
нового
пользователя,
по-
скольку
уникальное
сквозное
значение
будет
назначено ему сервером БД автоматически.
Поле и_пате содержит ФИО пользователя. Это
для ясности. Поле и_таН для функции напомина-
ния или восстановления пароля и служебных уве-
домлений.
Поля
и_агеа
и
и_ргм1еде
можно
использовать
для
хранения
идентификаторов доступных пользо-
вателю областей сайта и его приви-
легий в доступе (чтение, добавление,
изменение, удаление и др.).
Далее
идут
две
Б01--команды
на-
значения
первичных ключей для
оп-
тимизации
поиска
(поиск
зачастую
ведется именно по логину при авто-
ризации, а по Ю при администриро-
вании
списка
пользователей)
и
на-
^яяад и м и ияияи ■■■и. ■wi.m
ii
значения уникального ключа.
И вторая команда ту8д1_циегу добавляет запись
пользователя
(абтт:ас!птп)
в таблицу
БД.
Разу-
меется, сейчас нас интересуют только поля логи-
на и пароля.
Хранить пароли в натуральном виде, т.е. в том, в
котором
они
вводятся
пользователем,
не
реко-
мендуется из соображений безопасности. Напри-
мер,
БД с
паролями
к банковским
счетам
могут
выкрасть. Но если пароли в ней зашифрованы, то
ими
не смогут воспользоваться.
Поэтому теперь
следует рассказать о шифровании паролей.
Обычно в системах, которые имеют право назы-
ваться безопасными, пароли шифруют. Это озна-
чает, что пароль пользователя нигде не хранится в
открытом виде. Т.е. в том виде, в котором пользо-
ватель его вводит при регистрации или проверке
пароля. Пароли шифруют.
жшштшгтттштттж*
строку
“admin”.
Тем
ни
менее,
если
необходимо
получить ответ на
вопрос
“а ни строка ли
admin
была зашифрована”, то совершенно четко можно
получить ответ “Да” или “Нет”.
На первый взгляд это может казаться странным,
но так оно и есть. Поэтому, даже если злодей и за-
получит доступ
к БД с паролями,
он
не
сможет узнать их и воспользоваться ими.
Как
же
проверить
правильность
вве-
денного пользователем пароля в случае
его шифрования? На самом деле функ-
ция
cryp to
может принимать два аргу-
мента:
первый
-
строка,
подлежащая
шифрованию, а второй - ключ.
Если
введенный
пользователем текст
зашифровать
ключом,
в
роли
которого
1
подставить
зашифрованный
пароль
из
БД, то получим тот же самый ключ. Так
можно проверить правильность пароля.
Давайте рассмотрим поясняющий пример:
$pass1 = “admin”; / / нешифрованный пароль 1
I
$pass2 = “ 12345”; / / нешифрованный пароль 2
/ / зашифрованный пароль admin
$crypted_pass =
‘$1 $t. 1 .yN/. $ITzXcIWS Jthw8EE. j ptee 1 ’;
/ / проверяем пароль 1
if(crypt($pass1, $crypted_pass) ==
$crypted_pass)
echo “пароль $pass1 Ok<br>";
else echo “пароль $pass1 Error<br>”;
/ / проверяем пароль 2
if(crypt($pass2, $crypted_pass) == $crypted_pass)
echo “пароль $pass2 Ok<br>”;
шш*
1
I
else echo “пароль $pass2 Error<br>”;
He вдаваясь в подробности теории шифрова-
ния, покажу лишь практический пример. В РНР
для шифрования применяют функцию
cryptQ-
Напишем небольшой скрипт (например,
add_crypt_pass.php) для шифрования пароля:
$pass = crypt(“admin”);
l
mysq!_query(“INSERT
INTO
users
(
u jo g in ,
j u_password ) VALUES(‘admin’, ‘“.$pass.”’ )”);
Код подключения к БД я не показываю, он есть
выше. Теперь в БД будем иметь примерно такую
строку вместо пароля
Скрипт выдаст ответ:
:
пароль admin Ok
пароль 12345 Error
Перейдём к практическому применению. На на-
шем сайте http://multimedia сделаем возможность
входа
пользователя
с
проверкой
пароля.
Соста-
вим скрипт login.php и сохраним его в папку admin.
I
<?
f
session_start();
у
\*
И
Соединяемся с БД
“$1 $1.1 .уМ/.$1ТгХс^8и^8ЕЕ.]р1ее1 ”.
Это значит, что содержимое поля и_разз\л/огб за-
шифровано.
В
вашем
случае
эта
строка
будет
иной. На самом деле значение даже одного и того
же пароля при каждом шифровании будет разным.
ВАЖНО!
Смысл такого шифрования в том, что по
зашифрованному
паролю
невозможно
восстано-
вить пароль, но можно проверить его соответствие.
Так,
в данном
случае,
невозможно
расшифро-
вать
строку
“$1$1.1.уМ/.$1Т2ХсМ5и№\л/8ЕЕ.]р1ее1”
таким
образом,
чтобы
получить
оригинальную
I
Slink
~
@mysql_connect(“localhost”,
“multime-
dia
jjs e r”, “ 12345”);
* а *
if([email protected]$_SESSION[“is_authorized”])
if(isset($_POST[“login”]) && isset($_POST[“pass-
word”])){
$togin = $_POST[“login”];
$password = $_POST[“password”];
I/
запрашиваем шифрованный пароль по вве-
денному логину
предыдущая страница 37 Компьютер 2011 08 читать онлайн следующая страница 39 Компьютер 2011 08 читать онлайн Домой Выключить/включить текст