Слайд 2
![Определение сессии Web-сессия – специальный ключ (идентификатор сессии), хранящийся клиентской](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/140654/slide-1.jpg)
Определение сессии
Web-сессия – специальный ключ (идентификатор сессии), хранящийся клиентской программой и
сопоставляемый с пользовательскими данными на стороне сервера.
Сессии предназначены для хранения и передачи данных отдельного пользователя между динамическими страницами одного ресурса.
Слайд 3
![Причины появления сессий Web-сервер каждый раз при обращении к очередной](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/140654/slide-2.jpg)
Причины появления сессий
Web-сервер каждый раз при обращении к очередной странице инициализирует
новую HTTP-транзакцию без возможности связывания старых данных пользователя с вызовом новой динамической страницы.
Слайд 4
![Способы хранения ключа сессии на стороне клиента Ключ (идентификатор сессии)](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/140654/slide-3.jpg)
Способы хранения ключа сессии на стороне клиента
Ключ (идентификатор сессии) на стороне
клиента может храниться двумя способами:
В HTTP-Cookie (относительно безопасно)
Как часть URL (небезопасно)
Слайд 5
![Хранение сессии на стороне сервера Способы хранения данных внутри сессии](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/140654/slide-4.jpg)
Хранение сессии на стороне сервера
Способы хранения данных внутри сессии никак не
регламентируются и могут быть представлены различными способами: в структурных файлах сервера, в БД различного типа и т.д.
Данные сессии хранятся на сервере в виде массива.
Слайд 6
![Использование сессий Сессии могут использоваться для тех же целей, что](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/140654/slide-5.jpg)
Использование сессий
Сессии могут использоваться для тех же целей, что и HTTP
Cookie, но с сохранением данных на стороне сервера.
С помощью сессий также реализуются следующий функционал:
Подтверждение авторизации пользователя на сайте
Хранение временных данных, вводимых из нескольких форм
Корзина в интернет-магазине
Хранение символьного значения картинки из CAPTCHA
Слайд 7
![Механизм работы сессий Ключ считывается с сервера либо из строки](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/140654/slide-6.jpg)
Механизм работы сессий
Ключ считывается с сервера либо из строки URL, либо
из Cookie
На этапе проверки ключа проверяется, существуют ли данные на сервере, сопоставляемые с этим ключом.
Ключ генерируются таким образом, чтобы исключить возможность его подмены.
Слайд 8
![Сессии в PHP Ключ PHP-сессии, сохраняемый в Cookie, именуется по-умолчанию](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/140654/slide-7.jpg)
Сессии в PHP
Ключ PHP-сессии, сохраняемый в Cookie, именуется по-умолчанию PHPSESSID.
Значения сессии
хранятся в суперглобальном массиве $_SESSION
Слайд 9
![Сохранение данных сессии session_start(); /* инициализация механизма работы сессии */](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/140654/slide-8.jpg)
Сохранение данных сессии
session_start(); /* инициализация механизма работы сессии */
$_SESSION["user"] = "pavel";
/* Сохранение переменной сессии "user" со значением "pavel" */
if(isset($_SESSION["user"]) && !empty($_SESSION["user"]))
{
print "Пользователь авторизован";
}
else
{
print "Требуется авторизация";
}
Слайд 10
![Удаление данных сессии Для того, чтобы удалить переменную сессии, достаточно](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/140654/slide-9.jpg)
Удаление данных сессии
Для того, чтобы удалить переменную сессии, достаточно опустошить индекс
ассоциативного суперглобального массива $_SESSION:
unset($_SESSION["items"]);
// Пользователь удалил все товары из корзины покупок
Слайд 11
![Удаление всей сессии Для того, чтобы удалить полностью текущую сессию](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/140654/slide-10.jpg)
Удаление всей сессии
Для того, чтобы удалить полностью текущую сессию пользователя, можно
вызвать функцию session_destroy():
session_destroy();
// Пользователь нажал кнопку "Выход", а значит более он не авторизован
Слайд 12
![Функции работы с идентификатором и его именем Функция, возвращающая текущий](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/140654/slide-11.jpg)
Функции работы с идентификатором и его именем
Функция, возвращающая текущий идентификатор сессии:
string
session_id ([ string $id ] )
Функция, возвращающая или устанавливающая (если указана переменная $name) имя переменной Cookie для идентификатора сессии:
string session_name ([ string $name ] )
Слайд 13
![Безопасность сессии Узнав идентификатор сессии, злоумышленник может получить доступ к](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/140654/slide-12.jpg)
Безопасность сессии
Узнав идентификатор сессии, злоумышленник может получить доступ к учётной записи
другого пользователя. Способы получения идентификатора:
Перехватка GET-запроса через HTTP-заголовок Http-Referer на сайте, на который осуществлён переход (в том случае, если сессия хранится как часть URL)
Перехватка Cookies путём внедрения JavaScript-кода на одну из страниц сайта через XSS уязвимость ресурса или дополнительные привилегии администратора
Прослушивание HTTP-трафика
Слайд 14
![Безопасность сессии Существуют следующие методы обеспечения безопасности сессии: Запрет на](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/140654/slide-13.jpg)
Безопасность сессии
Существуют следующие методы обеспечения безопасности сессии:
Запрет на хранение идентификатора сессии
в части URL (только в Cookies)
Экранирование символов, способных внедрить HTML-код на страницу (можно использовать функцию htmlspecialchars())
Использование протокола SSL над HTTP
Слайд 15
![Другие технологии защиты сессии Ограничение срока действия сессии Привязка к](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/140654/slide-14.jpg)
Другие технологии защиты сессии
Ограничение срока действия сессии
Привязка к IP-адресу пользователя, его
браузеру и другим характеристикам
Слайд 16
![Функция md5() string md5 ( string $str ) Вычисляет MD5-хэш](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/140654/slide-15.jpg)
Функция md5()
string md5 ( string $str )
Вычисляет MD5-хэш строки str используя
алгоритм MD5 RSA Data Security, Inc. и возвращает этот хэш.
$str = 'яблоко';
if (md5($str) === '1afa148eb41f2e7103f21410bf48346c') {
echo "Вам зеленое или красное яблоко?";
}
?>