Механизмы авторизации, регистрации и аутентификации.
Доступ к переменным, находящимся в ассоциативных массивах GET и POST.
Прием и обработка значений передаваемых параметров.
Данная процедура должна удовлетворять следующему алгоритму:
1. в виду того, что значение параметров передается в виде строки текста необходимо удалить ненужную часть.
Размер поля size=3 определяет длину поля в визуальном отображении.
$var=substr($var,0,n)
n – число требуемых символов.
2. проверить наличие запрещенных символов в текстовом выражении переменных: знаки арифметических операций, кавычки, знаки препинания (: ; ! ?), специальные символы (&) и так далее.
Данная процедура зависит от предполагаемого типа переменных. Для выполнения более сложного анализа переменных необходимо использовать механизм регулярных выражений.
Механизм регулярных выражений позволяет использовать следующие инструменты:
1. шаблоны искомого текста;
2. элементы шаблона, которые включают:
- специальные символы;
- модификаторы;
- квантификаторы;
- одиночные символы;
- групповые операции.
If (! ereg (“^[0123456789] {1,5} $”, $value))
{
$retval=0;
break;}
ereg – команда, которая позволяет выполнить регулярное выражение.
^ - начало строки
$ - конец строки
если последовательность не найдена, то 12В-ошибка.
Поиск из комбинации латинских символов (цифр) в нотации Perl:
If ($text=~m/^\d {1,5} $/){
Print “ok”;
}
/^\d{1,5}$/
// - граница регулируемого выражения;
^ - начало строки текста;
\d – любая цифра, которая встречается от 1 до 5 раз;
$ - граница окончания строки текста.
Не соответствует: 12В – есть буква, 1278910 должно быть минимум 5 цифр, 2А4 – есть буква.
Если изменить квантификатор на /\d+/, то будет происходить поиск символов из 1 более символов.
1. анализ метода передачи данных от клиента серверу:
if ($_SERVER [“REQUEST_METHOD”]==”GET”) {
$VAL=@S_GET [$name];
else {$val=@$_POST[$name];
}
Для разграничения прав доступа пользователей к страницам сайта используют механизмы авторизации, регистрации и аутентификации.
Регистрация – процедура присвоения пользователю системы уникального идентификатора имени и пароля для входа.
Авторизация – процедура проверки соответствия введенного имени пользователя и пароля.
При работе с страницей сайта необходимо принимать во внимание следующее: каждое отдельное окно обозревателя есть независимое приложения, поэтому данные, введенные в предыдущей странице никаким образом не влияют на работу вызываемого сценария.
В обычном компилирующем приложении переменные, которые в главной функции была помещена в область глобальной переменной остается доступна для всех вызываемых функций.
При работе с сценариями или web-приложении у каждого сценария своя область глобальной переменной:
Рассмотрим следующий алгоритм:
href=’secret.html?login=”root”&password=”123”‘
Для устранения несанкционированного доступа к секретной странице и постоянной идентификации пользователя необходимо использовать механизм сессий.
Лекция 8
Алгоритм работы с переменными сеанса следующий:
1. запуск сессии;
2. проверка установленной переменной сессией;
3. в случае, если переменная не установлена, запретить доступ к «секретной» странице;
4. в случае, если предоставить пользователю доступ.
session_start();
if (!Isset ($_SESSION [‘uid’])) {
{ $uri=”htpp:/127.0.0.1/~my/index.php”;
header (“Location:$uri”);
exit ();
}
Для доступа на закрытую страницу сайта пользователя необходимо идентифицировать по значению уникальные номера. Для этого создается база данных пользователя минимальной структурой:
uid
Name Users
login
pswd
Идентификатор, внутренний номер
ник
Имя для входа в систему
Пароль, подтверждающий право входа в систему
Дополнительно в таблице пользователей может быть указан профиль или список доступных привилегий пользователя относительно функций системы и относительно правам доступа к таблицам баз данных.
Регистрация переменной сессии происходит на этапе авторизации.
1. ввод login и пароля;
2. проверка существующего login;
3. проверка пароля login;
5. проверка регистрации блока сессии;
6.сообщение об успешной авторизации, смена стиля шаблона страницы;
7. если переменная не зарегистрирована, он считается анонимом.
Можно сформировать запрос: выбрать все, если есть соответствие:
SELECT *
FROM users
WHERE login=”login” and pswd=”pswd”.
Чтобы исключить SQL инъекции необходимо выполнить запрос:
SELECT *
FROM users
WHERE login=”login”
Значение пароля из текущего набора данных сохраняем в переменную и сравниваем с введенным значением.