SlideShare a Scribd company logo
Сессии и авторизация
Web
Артём Картасов
Ключевые понятия
• Идентификация - это заявление о том, кем вы являетесь;
• Аутентификация - предоставление доказательств, что вы на самом деле есть тот,
кем идентифицировались;
• Авторизация - проверка, что вам разрешен доступ к запрашиваемому ресурсу;
Аутентификация по паролю:
• HTTP Basic authentication:
• username и password передаются в незашифрованном виде;
• относительно безопасен при https;
• HTTP Digest authentication:
• используются хэшированные username, password + nonce;
• уязвима к man-in-the-middle атакам;
• Forms authentication:
• нет стандарта, реализации специфичны для конкретных систем
Пример Basic HTTP-аутентификации
<?php
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized');
echo 'Текст, отправляемый в том случае, если пользователь нажал Cancel';
exit;
} else {
echo "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>";
echo "<p>Вы ввели пароль {$_SERVER['PHP_AUTH_PW']}.</p>";
}
Способы передачи username и password:
1. URL query — небезопасный вариант, т. к. строки URL могут запоминаться браузерами,
в логах, прокси и веб-серверами.
1. Request body — безопасный вариант, но он применим только для запросов,
содержащих тело сообщения (такие как POST, PUT, PATCH).
1. HTTP header —оптимальный вариант, при этом могут использоваться и стандартный
заголовок Authorization (например, с Basic-схемой), и другие произвольные
заголовки.
Сессии
• Хранятся на сервере;
• Доступ к данным через суперглобальный массив $_SESSION;
• По умолчанию сессии работают в файловой системе;
• Запускаются session_start(), либо автоматически(php.ini) session.auto_start = 1
• Сессия завершает свою работу в конце php-скрипта,
• может быть завершена и вручную session_write_close();
• Идентификатор сессии (session id):
• хранится в cookies;
• передается через URL (не рекомендуется);
Сессии. Пример
Регистрация переменной в сессии:
<?php
session_start();
if (!isset($_SESSION['count'])) {
$_SESSION['count'] = 0;
} else {
$_SESSION['count']++;
}
Отмена объявления переменной:
<?php
session_start();
unset($_SESSION['count']);
?>
Cookies
• Хранятся на клиенте;
• Cookies являются частью HTTP-заголовка;
• Cookies, отправленные серверу браузером клиента, будут включены в
суперглобальный массив $_COOKIE;
Cookies. Примеры
Установка cookies:
<?php
$value = 'test';
setcookie("TestCookie", $value);
/* срок действия 1 час */
setcookie("TestCookie", $value, time()+3600);
Чтение cookies:
<?php
echo $_COOKIE["TestCookie"];
// все cookies
print_r($_COOKIE);
Удаление cookies:
<?php
// установка даты истечения срока
действия на час назад
setcookie ("TestCookie", "", time() - 3600);
Безопасность. Сессии:
• Используйте только cookie. В php.ini:
• session.use_cookies = 1
• session.use_only_cookies = 1
• session_cookie_httponly = 1
• Регенерируйте ID сессии при помощи session_regenerate_id(true) после логина
или смены прав:
Пароли. Пример
$hashed_password = crypt('mypassword'); // соль будет сгенерирована автоматически
if (hash_equals($hashed_password, crypt($user_input, $hashed_password))) {
echo "Пароль верен!";
}
Пароли. Пример
<?php
$hash = '$2y$07$BCryptRequires22Chrcte/VlQH0piJtjXl.0t1XkA8pw9dMXTpOq';
if (password_verify('rasmuslerdorf', $hash)) {
echo 'Password is valid!';
} else {
echo 'Invalid password.';
}
<?php
password_hash("rasmuslerdorf", PASSWORD_DEFAULT); //
$2y$07$BCryptRequires22Chrcte/VlQH0piJtjXl.0t1XkA8pw9dMXTpOq
Безопасность. Пароли:
• Запретите создавать простые пароли;
• Защита от перебора паролей:
• ограничение попыток ввода (10 в минуту с одного IP достаточно);
• CAPTCHA;
• Не храните пароль в явном виде - только хэш;
• Используйте стойкие алгоритмы шифрования, например, bcrypt:
• bcrypt - не панацея, а лишь даёт вам время;
• md5, sha1 и т.д. - не вариант, даже с солью;
Альтернативные способы аутентификации
• Аутентификация по ключам доступа (access key, API key)
• обязательно использовать защищенное соединение;
• Аутентификация по токенам:
• “Активный” клиент (iOS/Android приложения)
• “Пассивный” клиент (браузер. Пример: OAuth, OAuth2)

More Related Content

What's hot

TestGuy - эмулируем вашего тестировщика
TestGuy - эмулируем вашего тестировщикаTestGuy - эмулируем вашего тестировщика
TestGuy - эмулируем вашего тестировщикаdavertmik
 
Dependency injection
Dependency injectionDependency injection
Dependency injection
Pavel Usachev
 
ClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
ClickHouse как решение для бизнес аналитики. Дмитрий КузьминClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
ClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
HOWWEDOIT
 
Лечение мобильных, поисковых редиректов и дорвеев на сайте
Лечение мобильных, поисковых редиректов и дорвеев на сайте Лечение мобильных, поисковых редиректов и дорвеев на сайте
Лечение мобильных, поисковых редиректов и дорвеев на сайте
revisium
 
Onliner PHP Meetup
Onliner PHP MeetupOnliner PHP Meetup
Onliner PHP Meetup
Alexander Mohorev
 
Basis.js - Production Ready Framework
Basis.js - Production Ready FrameworkBasis.js - Production Ready Framework
Basis.js - Production Ready Framework
Сергей Мелюков
 
Basis.js - Production Ready SPA Framework
Basis.js - Production Ready SPA FrameworkBasis.js - Production Ready SPA Framework
Basis.js - Production Ready SPA Framework
MoscowJS
 
"Basis.js - Production Ready SPA Framework" Сергей Мелюков (Avito)
"Basis.js - Production Ready SPA Framework" Сергей Мелюков (Avito)"Basis.js - Production Ready SPA Framework" Сергей Мелюков (Avito)
"Basis.js - Production Ready SPA Framework" Сергей Мелюков (Avito)
AvitoTech
 
Электронный архив документов операционного дня банка на базе системы Docsvision
Электронный архив документов операционного дня банка на базе системы DocsvisionЭлектронный архив документов операционного дня банка на базе системы Docsvision
Электронный архив документов операционного дня банка на базе системы Docsvision
Docsvision
 
Безопасность веб-приложений. Так ли опасна виртуальная угроза?
Безопасность веб-приложений.  Так ли опасна виртуальная угроза?Безопасность веб-приложений.  Так ли опасна виртуальная угроза?
Безопасность веб-приложений. Так ли опасна виртуальная угроза?phpdevby
 
Seo 2016
Seo 2016Seo 2016
Seo 2016
sslash65
 
Отдаем страницы быстрее или как вписаться в требования Google
Отдаем страницы быстрее или как вписаться в требования GoogleОтдаем страницы быстрее или как вписаться в требования Google
Отдаем страницы быстрее или как вписаться в требования Google
IT61
 
Ice Php Framework Preview Release
Ice Php Framework Preview ReleaseIce Php Framework Preview Release
Ice Php Framework Preview Release
Denis Shestakov
 
Як залучати відвідувачів та піднімати доходи з Internet Explorer 8: технологі...
Як залучати відвідувачів та піднімати доходи з Internet Explorer 8: технологі...Як залучати відвідувачів та піднімати доходи з Internet Explorer 8: технологі...
Як залучати відвідувачів та піднімати доходи з Internet Explorer 8: технологі...
Anna
 
WebCamp: Developer Day: Быстродействие веб-сайта. Методичный анализ и глубины...
WebCamp: Developer Day: Быстродействие веб-сайта. Методичный анализ и глубины...WebCamp: Developer Day: Быстродействие веб-сайта. Методичный анализ и глубины...
WebCamp: Developer Day: Быстродействие веб-сайта. Методичный анализ и глубины...
GeeksLab Odessa
 
Анализируем данные с Clickhouse
Анализируем данные с  ClickhouseАнализируем данные с  Clickhouse
Анализируем данные с Clickhouse
Александр Сигачев
 
Безопасность веб-приложений: starter edition
Безопасность веб-приложений: starter editionБезопасность веб-приложений: starter edition
Безопасность веб-приложений: starter edition
Andrew Petukhov
 
Mihail davidov js-ajax
Mihail davidov js-ajaxMihail davidov js-ajax
Mihail davidov js-ajaxYandex
 

What's hot (20)

TestGuy - эмулируем вашего тестировщика
TestGuy - эмулируем вашего тестировщикаTestGuy - эмулируем вашего тестировщика
TestGuy - эмулируем вашего тестировщика
 
Dependency injection
Dependency injectionDependency injection
Dependency injection
 
ClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
ClickHouse как решение для бизнес аналитики. Дмитрий КузьминClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
ClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
 
Лечение мобильных, поисковых редиректов и дорвеев на сайте
Лечение мобильных, поисковых редиректов и дорвеев на сайте Лечение мобильных, поисковых редиректов и дорвеев на сайте
Лечение мобильных, поисковых редиректов и дорвеев на сайте
 
Onliner PHP Meetup
Onliner PHP MeetupOnliner PHP Meetup
Onliner PHP Meetup
 
Basis.js - Production Ready Framework
Basis.js - Production Ready FrameworkBasis.js - Production Ready Framework
Basis.js - Production Ready Framework
 
Basis.js - Production Ready SPA Framework
Basis.js - Production Ready SPA FrameworkBasis.js - Production Ready SPA Framework
Basis.js - Production Ready SPA Framework
 
"Basis.js - Production Ready SPA Framework" Сергей Мелюков (Avito)
"Basis.js - Production Ready SPA Framework" Сергей Мелюков (Avito)"Basis.js - Production Ready SPA Framework" Сергей Мелюков (Avito)
"Basis.js - Production Ready SPA Framework" Сергей Мелюков (Avito)
 
Электронный архив документов операционного дня банка на базе системы Docsvision
Электронный архив документов операционного дня банка на базе системы DocsvisionЭлектронный архив документов операционного дня банка на базе системы Docsvision
Электронный архив документов операционного дня банка на базе системы Docsvision
 
176023
176023176023
176023
 
Безопасность веб-приложений. Так ли опасна виртуальная угроза?
Безопасность веб-приложений.  Так ли опасна виртуальная угроза?Безопасность веб-приложений.  Так ли опасна виртуальная угроза?
Безопасность веб-приложений. Так ли опасна виртуальная угроза?
 
Seo 2016
Seo 2016Seo 2016
Seo 2016
 
Отдаем страницы быстрее или как вписаться в требования Google
Отдаем страницы быстрее или как вписаться в требования GoogleОтдаем страницы быстрее или как вписаться в требования Google
Отдаем страницы быстрее или как вписаться в требования Google
 
Ice Php Framework Preview Release
Ice Php Framework Preview ReleaseIce Php Framework Preview Release
Ice Php Framework Preview Release
 
Як залучати відвідувачів та піднімати доходи з Internet Explorer 8: технологі...
Як залучати відвідувачів та піднімати доходи з Internet Explorer 8: технологі...Як залучати відвідувачів та піднімати доходи з Internet Explorer 8: технологі...
Як залучати відвідувачів та піднімати доходи з Internet Explorer 8: технологі...
 
WebCamp: Developer Day: Быстродействие веб-сайта. Методичный анализ и глубины...
WebCamp: Developer Day: Быстродействие веб-сайта. Методичный анализ и глубины...WebCamp: Developer Day: Быстродействие веб-сайта. Методичный анализ и глубины...
WebCamp: Developer Day: Быстродействие веб-сайта. Методичный анализ и глубины...
 
Анализируем данные с Clickhouse
Анализируем данные с  ClickhouseАнализируем данные с  Clickhouse
Анализируем данные с Clickhouse
 
Browser Persistence Bynet
Browser Persistence BynetBrowser Persistence Bynet
Browser Persistence Bynet
 
Безопасность веб-приложений: starter edition
Безопасность веб-приложений: starter editionБезопасность веб-приложений: starter edition
Безопасность веб-приложений: starter edition
 
Mihail davidov js-ajax
Mihail davidov js-ajaxMihail davidov js-ajax
Mihail davidov js-ajax
 

Similar to Сессии и авторизация

Flask, rest and data
Flask, rest and dataFlask, rest and data
Flask, rest and data
Yehor Nazarkin
 
Владимир Кочетков "OWASP TOP 10 для.NET"
Владимир Кочетков  "OWASP TOP 10 для.NET"Владимир Кочетков  "OWASP TOP 10 для.NET"
Владимир Кочетков "OWASP TOP 10 для.NET"
MskDotNet Community
 
15 - Web-технологии. Сессии и авторизация
15 - Web-технологии. Сессии и авторизация15 - Web-технологии. Сессии и авторизация
15 - Web-технологии. Сессии и авторизация
Roman Brovko
 
лабораторная работа №2.e
лабораторная работа №2.eлабораторная работа №2.e
лабораторная работа №2.estudent_kai
 
лабораторная работа №2
лабораторная работа №2лабораторная работа №2
лабораторная работа №2student_kai
 
«Стой! Кто идет?»: аутентификация и авторизация в корпоративных системах
«Стой! Кто идет?»: аутентификация и авторизация в корпоративных системах«Стой! Кто идет?»: аутентификация и авторизация в корпоративных системах
«Стой! Кто идет?»: аутентификация и авторизация в корпоративных системах
CUSTIS
 
М. Боднарчук Современное функциональное тестирование с Codeception
М. Боднарчук Современное функциональное тестирование с CodeceptionМ. Боднарчук Современное функциональное тестирование с Codeception
М. Боднарчук Современное функциональное тестирование с CodeceptionAlbina Tiupa
 
Стажировка-2015. Разработка. Занятие 11. Безопасность web-приложений
Стажировка-2015. Разработка. Занятие 11. Безопасность web-приложенийСтажировка-2015. Разработка. Занятие 11. Безопасность web-приложений
Стажировка-2015. Разработка. Занятие 11. Безопасность web-приложений
7bits
 
Михаил Боднарчук Современное функциональное тестирование с Codeception
Михаил Боднарчук Современное функциональное тестирование с CodeceptionМихаил Боднарчук Современное функциональное тестирование с Codeception
Михаил Боднарчук Современное функциональное тестирование с CodeceptionAlbina Tiupa
 
Igor ostuchenko-analytics-110317084549-phpapp01
Igor ostuchenko-analytics-110317084549-phpapp01Igor ostuchenko-analytics-110317084549-phpapp01
Igor ostuchenko-analytics-110317084549-phpapp01Павел Иванов
 
Blackbox-тестирование веб-приложений
Blackbox-тестирование веб-приложенийBlackbox-тестирование веб-приложений
Blackbox-тестирование веб-приложений
beched
 
«DevOps — это о передаче смысла» — Александр Титов, Express 42
«DevOps — это о передаче смысла» — Александр Титов, Express 42«DevOps — это о передаче смысла» — Александр Титов, Express 42
«DevOps — это о передаче смысла» — Александр Титов, Express 42
DevDay
 
Web весна 2013 лекция 11
Web весна 2013 лекция 11Web весна 2013 лекция 11
Web весна 2013 лекция 11Technopark
 
Windows Server 2012: учимся безопасности передачи данных с помощью AD СS
Windows Server 2012: учимся безопасности передачи данных с помощью AD СSWindows Server 2012: учимся безопасности передачи данных с помощью AD СS
Windows Server 2012: учимся безопасности передачи данных с помощью AD СS
SkillFactory
 
2013 09 19 кеширование на клиенте и сервере
2013 09 19 кеширование на клиенте и сервере2013 09 19 кеширование на клиенте и сервере
2013 09 19 кеширование на клиенте и сервереYandex
 
HSE{Consult}: DevOps – новая методология разработки
HSE{Consult}: DevOps – новая методология разработкиHSE{Consult}: DevOps – новая методология разработки
HSE{Consult}: DevOps – новая методология разработки
Business incubator HSE
 
DevOps или исскуство ухода за Интернет-проектом
DevOps или исскуство ухода за Интернет-проектомDevOps или исскуство ухода за Интернет-проектом
DevOps или исскуство ухода за Интернет-проектом
Alexander Titov
 
Selenium на практике и подводные камни
Selenium на практике и подводные камниSelenium на практике и подводные камни
Selenium на практике и подводные камни
SQALab
 
"ТОП10 SEO-ошибок при переезде сайта на https-протокол, смене домена" Вебинар...
"ТОП10 SEO-ошибок при переезде сайта на https-протокол, смене домена" Вебинар..."ТОП10 SEO-ошибок при переезде сайта на https-протокол, смене домена" Вебинар...
"ТОП10 SEO-ошибок при переезде сайта на https-протокол, смене домена" Вебинар...
Академия интернет-маркетинга «WebPromoExperts»
 
Система обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на GroovyСистема обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на GroovyRegn
 

Similar to Сессии и авторизация (20)

Flask, rest and data
Flask, rest and dataFlask, rest and data
Flask, rest and data
 
Владимир Кочетков "OWASP TOP 10 для.NET"
Владимир Кочетков  "OWASP TOP 10 для.NET"Владимир Кочетков  "OWASP TOP 10 для.NET"
Владимир Кочетков "OWASP TOP 10 для.NET"
 
15 - Web-технологии. Сессии и авторизация
15 - Web-технологии. Сессии и авторизация15 - Web-технологии. Сессии и авторизация
15 - Web-технологии. Сессии и авторизация
 
лабораторная работа №2.e
лабораторная работа №2.eлабораторная работа №2.e
лабораторная работа №2.e
 
лабораторная работа №2
лабораторная работа №2лабораторная работа №2
лабораторная работа №2
 
«Стой! Кто идет?»: аутентификация и авторизация в корпоративных системах
«Стой! Кто идет?»: аутентификация и авторизация в корпоративных системах«Стой! Кто идет?»: аутентификация и авторизация в корпоративных системах
«Стой! Кто идет?»: аутентификация и авторизация в корпоративных системах
 
М. Боднарчук Современное функциональное тестирование с Codeception
М. Боднарчук Современное функциональное тестирование с CodeceptionМ. Боднарчук Современное функциональное тестирование с Codeception
М. Боднарчук Современное функциональное тестирование с Codeception
 
Стажировка-2015. Разработка. Занятие 11. Безопасность web-приложений
Стажировка-2015. Разработка. Занятие 11. Безопасность web-приложенийСтажировка-2015. Разработка. Занятие 11. Безопасность web-приложений
Стажировка-2015. Разработка. Занятие 11. Безопасность web-приложений
 
Михаил Боднарчук Современное функциональное тестирование с Codeception
Михаил Боднарчук Современное функциональное тестирование с CodeceptionМихаил Боднарчук Современное функциональное тестирование с Codeception
Михаил Боднарчук Современное функциональное тестирование с Codeception
 
Igor ostuchenko-analytics-110317084549-phpapp01
Igor ostuchenko-analytics-110317084549-phpapp01Igor ostuchenko-analytics-110317084549-phpapp01
Igor ostuchenko-analytics-110317084549-phpapp01
 
Blackbox-тестирование веб-приложений
Blackbox-тестирование веб-приложенийBlackbox-тестирование веб-приложений
Blackbox-тестирование веб-приложений
 
«DevOps — это о передаче смысла» — Александр Титов, Express 42
«DevOps — это о передаче смысла» — Александр Титов, Express 42«DevOps — это о передаче смысла» — Александр Титов, Express 42
«DevOps — это о передаче смысла» — Александр Титов, Express 42
 
Web весна 2013 лекция 11
Web весна 2013 лекция 11Web весна 2013 лекция 11
Web весна 2013 лекция 11
 
Windows Server 2012: учимся безопасности передачи данных с помощью AD СS
Windows Server 2012: учимся безопасности передачи данных с помощью AD СSWindows Server 2012: учимся безопасности передачи данных с помощью AD СS
Windows Server 2012: учимся безопасности передачи данных с помощью AD СS
 
2013 09 19 кеширование на клиенте и сервере
2013 09 19 кеширование на клиенте и сервере2013 09 19 кеширование на клиенте и сервере
2013 09 19 кеширование на клиенте и сервере
 
HSE{Consult}: DevOps – новая методология разработки
HSE{Consult}: DevOps – новая методология разработкиHSE{Consult}: DevOps – новая методология разработки
HSE{Consult}: DevOps – новая методология разработки
 
DevOps или исскуство ухода за Интернет-проектом
DevOps или исскуство ухода за Интернет-проектомDevOps или исскуство ухода за Интернет-проектом
DevOps или исскуство ухода за Интернет-проектом
 
Selenium на практике и подводные камни
Selenium на практике и подводные камниSelenium на практике и подводные камни
Selenium на практике и подводные камни
 
"ТОП10 SEO-ошибок при переезде сайта на https-протокол, смене домена" Вебинар...
"ТОП10 SEO-ошибок при переезде сайта на https-протокол, смене домена" Вебинар..."ТОП10 SEO-ошибок при переезде сайта на https-протокол, смене домена" Вебинар...
"ТОП10 SEO-ошибок при переезде сайта на https-протокол, смене домена" Вебинар...
 
Система обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на GroovyСистема обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на Groovy
 

More from Noveo

Гуманитарные специальности в IT-индустрии
Гуманитарные специальности в IT-индустрииГуманитарные специальности в IT-индустрии
Гуманитарные специальности в IT-индустрии
Noveo
 
Box model, display and position (HTML5 тема 07 - box model, display position)
Box model, display and position (HTML5 тема 07 - box model, display position)Box model, display and position (HTML5 тема 07 - box model, display position)
Box model, display and position (HTML5 тема 07 - box model, display position)
Noveo
 
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
Noveo
 
Стилизация текста (HTML5 тема 05 - стилизация текста)
Стилизация текста (HTML5 тема 05 - стилизация текста)Стилизация текста (HTML5 тема 05 - стилизация текста)
Стилизация текста (HTML5 тема 05 - стилизация текста)
Noveo
 
Семантика текста (HTML5 тема 04 - семантика текста)
Семантика текста (HTML5 тема 04 - семантика текста)Семантика текста (HTML5 тема 04 - семантика текста)
Семантика текста (HTML5 тема 04 - семантика текста)
Noveo
 
Основы CSS (HTML5 тема 02 - основы CSS)
Основы CSS (HTML5 тема 02 - основы CSS)Основы CSS (HTML5 тема 02 - основы CSS)
Основы CSS (HTML5 тема 02 - основы CSS)
Noveo
 
Структура HTML документа (HTML5 тема 01 - структура html документа)
Структура HTML документа (HTML5 тема 01 - структура html документа)Структура HTML документа (HTML5 тема 01 - структура html документа)
Структура HTML документа (HTML5 тема 01 - структура html документа)
Noveo
 
Yii2
Yii2Yii2
Yii2
Noveo
 
Rest
RestRest
Rest
Noveo
 
PHP basic
PHP basicPHP basic
PHP basic
Noveo
 
PHP Advanced
PHP AdvancedPHP Advanced
PHP Advanced
Noveo
 
PHP and MySQL
PHP and MySQLPHP and MySQL
PHP and MySQL
Noveo
 
MySQL
MySQLMySQL
MySQL
Noveo
 
Push Notifications (Lecture 22 – push notifications)
Push Notifications (Lecture 22 – push notifications)Push Notifications (Lecture 22 – push notifications)
Push Notifications (Lecture 22 – push notifications)
Noveo
 
RxJava+RxAndroid (Lecture 20 – rx java)
RxJava+RxAndroid (Lecture 20 – rx java)RxJava+RxAndroid (Lecture 20 – rx java)
RxJava+RxAndroid (Lecture 20 – rx java)
Noveo
 
Работа с соцсетями (Lecture 19 – social)
Работа с соцсетями (Lecture 19 – social)Работа с соцсетями (Lecture 19 – social)
Работа с соцсетями (Lecture 19 – social)
Noveo
 
Работа с геоданными (Lecture 18 – geolocation)
Работа с геоданными (Lecture 18 – geolocation)Работа с геоданными (Lecture 18 – geolocation)
Работа с геоданными (Lecture 18 – geolocation)
Noveo
 
Animations (Lecture 17 – animations)
Animations (Lecture 17 – animations)Animations (Lecture 17 – animations)
Animations (Lecture 17 – animations)
Noveo
 
Toolbar (Lecture 16 – toolbar)
Toolbar (Lecture 16 – toolbar)Toolbar (Lecture 16 – toolbar)
Toolbar (Lecture 16 – toolbar)
Noveo
 
Material Design (Lecture 15 – material design)
Material Design (Lecture 15 – material design)Material Design (Lecture 15 – material design)
Material Design (Lecture 15 – material design)
Noveo
 

More from Noveo (20)

Гуманитарные специальности в IT-индустрии
Гуманитарные специальности в IT-индустрииГуманитарные специальности в IT-индустрии
Гуманитарные специальности в IT-индустрии
 
Box model, display and position (HTML5 тема 07 - box model, display position)
Box model, display and position (HTML5 тема 07 - box model, display position)Box model, display and position (HTML5 тема 07 - box model, display position)
Box model, display and position (HTML5 тема 07 - box model, display position)
 
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
 
Стилизация текста (HTML5 тема 05 - стилизация текста)
Стилизация текста (HTML5 тема 05 - стилизация текста)Стилизация текста (HTML5 тема 05 - стилизация текста)
Стилизация текста (HTML5 тема 05 - стилизация текста)
 
Семантика текста (HTML5 тема 04 - семантика текста)
Семантика текста (HTML5 тема 04 - семантика текста)Семантика текста (HTML5 тема 04 - семантика текста)
Семантика текста (HTML5 тема 04 - семантика текста)
 
Основы CSS (HTML5 тема 02 - основы CSS)
Основы CSS (HTML5 тема 02 - основы CSS)Основы CSS (HTML5 тема 02 - основы CSS)
Основы CSS (HTML5 тема 02 - основы CSS)
 
Структура HTML документа (HTML5 тема 01 - структура html документа)
Структура HTML документа (HTML5 тема 01 - структура html документа)Структура HTML документа (HTML5 тема 01 - структура html документа)
Структура HTML документа (HTML5 тема 01 - структура html документа)
 
Yii2
Yii2Yii2
Yii2
 
Rest
RestRest
Rest
 
PHP basic
PHP basicPHP basic
PHP basic
 
PHP Advanced
PHP AdvancedPHP Advanced
PHP Advanced
 
PHP and MySQL
PHP and MySQLPHP and MySQL
PHP and MySQL
 
MySQL
MySQLMySQL
MySQL
 
Push Notifications (Lecture 22 – push notifications)
Push Notifications (Lecture 22 – push notifications)Push Notifications (Lecture 22 – push notifications)
Push Notifications (Lecture 22 – push notifications)
 
RxJava+RxAndroid (Lecture 20 – rx java)
RxJava+RxAndroid (Lecture 20 – rx java)RxJava+RxAndroid (Lecture 20 – rx java)
RxJava+RxAndroid (Lecture 20 – rx java)
 
Работа с соцсетями (Lecture 19 – social)
Работа с соцсетями (Lecture 19 – social)Работа с соцсетями (Lecture 19 – social)
Работа с соцсетями (Lecture 19 – social)
 
Работа с геоданными (Lecture 18 – geolocation)
Работа с геоданными (Lecture 18 – geolocation)Работа с геоданными (Lecture 18 – geolocation)
Работа с геоданными (Lecture 18 – geolocation)
 
Animations (Lecture 17 – animations)
Animations (Lecture 17 – animations)Animations (Lecture 17 – animations)
Animations (Lecture 17 – animations)
 
Toolbar (Lecture 16 – toolbar)
Toolbar (Lecture 16 – toolbar)Toolbar (Lecture 16 – toolbar)
Toolbar (Lecture 16 – toolbar)
 
Material Design (Lecture 15 – material design)
Material Design (Lecture 15 – material design)Material Design (Lecture 15 – material design)
Material Design (Lecture 15 – material design)
 

Сессии и авторизация

  • 2. Ключевые понятия • Идентификация - это заявление о том, кем вы являетесь; • Аутентификация - предоставление доказательств, что вы на самом деле есть тот, кем идентифицировались; • Авторизация - проверка, что вам разрешен доступ к запрашиваемому ресурсу;
  • 3. Аутентификация по паролю: • HTTP Basic authentication: • username и password передаются в незашифрованном виде; • относительно безопасен при https; • HTTP Digest authentication: • используются хэшированные username, password + nonce; • уязвима к man-in-the-middle атакам; • Forms authentication: • нет стандарта, реализации специфичны для конкретных систем
  • 4. Пример Basic HTTP-аутентификации <?php if (!isset($_SERVER['PHP_AUTH_USER'])) { header('WWW-Authenticate: Basic realm="My Realm"'); header('HTTP/1.0 401 Unauthorized'); echo 'Текст, отправляемый в том случае, если пользователь нажал Cancel'; exit; } else { echo "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>"; echo "<p>Вы ввели пароль {$_SERVER['PHP_AUTH_PW']}.</p>"; }
  • 5. Способы передачи username и password: 1. URL query — небезопасный вариант, т. к. строки URL могут запоминаться браузерами, в логах, прокси и веб-серверами. 1. Request body — безопасный вариант, но он применим только для запросов, содержащих тело сообщения (такие как POST, PUT, PATCH). 1. HTTP header —оптимальный вариант, при этом могут использоваться и стандартный заголовок Authorization (например, с Basic-схемой), и другие произвольные заголовки.
  • 6. Сессии • Хранятся на сервере; • Доступ к данным через суперглобальный массив $_SESSION; • По умолчанию сессии работают в файловой системе; • Запускаются session_start(), либо автоматически(php.ini) session.auto_start = 1 • Сессия завершает свою работу в конце php-скрипта, • может быть завершена и вручную session_write_close(); • Идентификатор сессии (session id): • хранится в cookies; • передается через URL (не рекомендуется);
  • 7. Сессии. Пример Регистрация переменной в сессии: <?php session_start(); if (!isset($_SESSION['count'])) { $_SESSION['count'] = 0; } else { $_SESSION['count']++; } Отмена объявления переменной: <?php session_start(); unset($_SESSION['count']); ?>
  • 8. Cookies • Хранятся на клиенте; • Cookies являются частью HTTP-заголовка; • Cookies, отправленные серверу браузером клиента, будут включены в суперглобальный массив $_COOKIE;
  • 9. Cookies. Примеры Установка cookies: <?php $value = 'test'; setcookie("TestCookie", $value); /* срок действия 1 час */ setcookie("TestCookie", $value, time()+3600); Чтение cookies: <?php echo $_COOKIE["TestCookie"]; // все cookies print_r($_COOKIE); Удаление cookies: <?php // установка даты истечения срока действия на час назад setcookie ("TestCookie", "", time() - 3600);
  • 10. Безопасность. Сессии: • Используйте только cookie. В php.ini: • session.use_cookies = 1 • session.use_only_cookies = 1 • session_cookie_httponly = 1 • Регенерируйте ID сессии при помощи session_regenerate_id(true) после логина или смены прав:
  • 11. Пароли. Пример $hashed_password = crypt('mypassword'); // соль будет сгенерирована автоматически if (hash_equals($hashed_password, crypt($user_input, $hashed_password))) { echo "Пароль верен!"; }
  • 12. Пароли. Пример <?php $hash = '$2y$07$BCryptRequires22Chrcte/VlQH0piJtjXl.0t1XkA8pw9dMXTpOq'; if (password_verify('rasmuslerdorf', $hash)) { echo 'Password is valid!'; } else { echo 'Invalid password.'; } <?php password_hash("rasmuslerdorf", PASSWORD_DEFAULT); // $2y$07$BCryptRequires22Chrcte/VlQH0piJtjXl.0t1XkA8pw9dMXTpOq
  • 13. Безопасность. Пароли: • Запретите создавать простые пароли; • Защита от перебора паролей: • ограничение попыток ввода (10 в минуту с одного IP достаточно); • CAPTCHA; • Не храните пароль в явном виде - только хэш; • Используйте стойкие алгоритмы шифрования, например, bcrypt: • bcrypt - не панацея, а лишь даёт вам время; • md5, sha1 и т.д. - не вариант, даже с солью;
  • 14. Альтернативные способы аутентификации • Аутентификация по ключам доступа (access key, API key) • обязательно использовать защищенное соединение; • Аутентификация по токенам: • “Активный” клиент (iOS/Android приложения) • “Пассивный” клиент (браузер. Пример: OAuth, OAuth2)