Лістинг 6.11. secret.php — РНР-код для реалізації простого механізму аутентифікації
<?
if(!isset($name)&&!isset($password))
{// Відвідувач повинен ввести ім'я і пароль
?>
<h1>Please Log In</h1>This page is secret.
<form method = post action = "secret.php">
<table border = 1>
<tr><th>Username</th><td><input type = text name = name></td></tr>
<tr><th>Password</th><td><input type = password name = password>
</td></tr><tr><td colspan =2 align = center>
<input type = submit value = "Log In"></td></tr>
</table></form>
<? }
else if($name=="user"&&$password=="pass")
<? // Комбінація імені і пароля відвідувача правильна
echo "<h1>Here it is!</h1>";
echo "I bet you are glad you can see this secret page."; }
else
{ // Комбінація імені і пароля відвідувача неправильна
echo "<hl>Go Away!</hl>";
echo "You are not authorized to view this resource."; }
?>
Код, показаний в лістингу 6.11, реалізує простий механізм, що дозволяє санкціонованим відвідувачам бачити захищену сторінку, проте код містить декілька значних проблем. Цей сценарій:
· підтримує лише одне жорстко закодоване ім'я користувача і пароль
· зберігає пароль у вигляді простого тексту
· захищає лише одну сторінку
· передає пароль у вигляді простого тексту
Згадані проблеми можна вирішити з різною мірою зусиль і успіху.
Зберігання паролів.Для зберігання паролів існує багато більш відповідних, ніж код сценарію, місць. Усередині сценарію дуже важко змінювати дані. Можна написати сценарій, який змінюватиме себе, але це погана ідея. Це означатиме існування выполняющегося на сервері сценарію, доступного для запису і змін з боку інших користувачів. Зберігання паролів в окремому файлі на сервері дозволить без зусиль написати програму для додавання і видалення користувачів, а також для зміни паролів.
Усередині сценарію або іншого файлу даних існує обмеження на кількість користувачів, яких можна обслуговувати, серйозно не нашкодувши загальної производительности сценарію. Якщо планується зберігати велику кількість елементів у файлі або проводити пошук в рамках великого числа елементів, то, як обговорювалося раніше, слід розглянути можливість використання бази даних замість двовимірного файлу. Практичний метод вибору свідчить: якщо ви збираєтеся зберігати і проводити пошук більш ніж 100 елементах, слід віддати перевагу базі даних.
Використання бази даних для зберігання імен і паролів відвідувачів не сильно ускладнить сценарій, але дозволить швидко проводити аутентифікацію безлічі користувачів. Це також спростить створення сценарію для додавання і видалення користувачів, а також дасть можливість користувачам змінювати свої паролі.
Сценарій для аутентифікації відвідувачів сторінки з використанням бази даних приведений в лістингу 6.12.
Дата добавления: 2016-04-02; просмотров: 503;