industrial programming java - lection pack 02 - distributed applications - lavrentyev fedor
TRANSCRIPT
![Page 1: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/1.jpg)
ПроизводительностьПромышленное программирование
![Page 2: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/2.jpg)
Границы возможностей ЭВМ
![Page 3: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/3.jpg)
Ресурсы машиныПроцессорная мощностьОперативная памятьДисковый ввод/выводСетевой ввод/вывод
![Page 4: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/4.jpg)
На что расходуются ресурсыПолучение запросов по сети, отдача
ответов - сетьПоддержание соединений и управление
ими - процессор, памятьОбработка запроса и формирование ответа
(т.е. логика) - процессор, памятьОтдача статического контента - диск
![Page 5: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/5.jpg)
На что расходуются ресурсыЧтение и запись в БД и ФС - дискКеши БД и ФС - памятьСложные запросы к БД (filter, aggregate,
join) - диск, память, процессорЗапросы к другим процессам - процессорЗапросы к другим машинам - сетьТелеметрия - диск, сеть
![Page 6: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/6.jpg)
Чем меряют производительностьНагрузка (load) - число запросов в секунду
(Requests per second, RPS)Пропускная способность (throughput) -
максимальное значение нагрузки, которое выдерживает сервис, RPS
Задержка (latency) - время выполнения одного запроса, мс.
latency = f(load)
![Page 7: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/7.jpg)
Из чего складывается задержкаПередача по сети в обе стороны (RTT)Установление TCP соединения (SYN+ACK)Получение и разбор запросаОбращение к базам данныхОбращение к другим сервисамВычисления, построение ответаОбработка (рендеринг) ответа на клиенте
![Page 8: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/8.jpg)
Приемлемая задержкаRTT внутри ДЦ <1мсRTT из Москвы до Нью-Йорка - 120 мсRTT из Москвы до южного Китая - 250 мсGet в Redis - 0,3 мсPrepared query by PK в MySQL - 5 мсОтвет от Web-сервера - 50-200 мсРендеринг на клиенте - 50-100 мсНезаметное для человека время - 400 мс
![Page 9: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/9.jpg)
Деградация сервисаОшибки взаимодействия (протокола)Утрата функциональностиВ т.ч. переход в Read-OnlyТаймаут - чрезмерная задержкаОшибки, блокирующие выполнениеПотеря или рассогласование данных
![Page 10: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/10.jpg)
Последствия нехватки ресурсов
![Page 11: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/11.jpg)
Если не хватает процессораЗа момент времени обрабатывается
запросов меньше, чем принимаетсяЗапросы встают в очередьОчередь не уменьшаетсяЗапросы не успевают выполнитьсяОчередь сжирает всю памятьКлиент фиксирует таймауты
![Page 12: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/12.jpg)
Если не хватает объема памятиВыполнение запроса может спонтанно
прерваться в любое времяМожет спонтанно прерваться сервисный
тред или сторонняя службаСистема коллапсирует, пока не будет
остановлен расходующий память процессКлиент фиксирует всевозможные ошибки
![Page 13: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/13.jpg)
Если не хватает скорости сетиНекоторые запросы фрагментируются,
засоряют очередь и отбрасываютсяНекоторые ответы теряютсяНарушается связь с другими узламиОтвалившиеся соединения образуют
очереди и расходуют память и процессорКлиент фиксирует таймаутыКлиент фиксирует ошибки протоколов
![Page 14: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/14.jpg)
Если не хватает скорости дисковДисковые операции долго висят в
ожидании, блокируют друг друга или теребят контроллер диска
Существенно увеличивается время обработки запросов
За момент времени обрабатывается запросов меньше, чем принимается…
См. нехватку процессора
![Page 15: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/15.jpg)
Если не хватает объема дисковПрекращается сбор телеметрии (логи,
мониторинг) - оператор системы слепнетСпонтанно прекращается запись на диск,
возможно, с утратой целостности данныхФатально деградирует функциональность
систем, пишущих на дискКлиент фиксирует ошибки сервисаСистема может жить в Read-Only
![Page 16: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/16.jpg)
Чего еще может не хвататьФайловых и сокетных дескрипторовДескрипторов потоков и процессовСкорости северного моста (можно считать,
что процессора)Скорости южного моста - связки между
процессором и I/OМощности отдельных устройств - сетевой
карты, дисковых контроллеров и т.п.
![Page 17: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/17.jpg)
Увеличение доступных ресурсов
![Page 18: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/18.jpg)
Оптимизация расхода ресурсовРефакторинг кодовой базыАсимптотческая оптимизация алгоритмовДедупликация данных, устранение
избыточности, рефакторинг моделейУпорядочивание запросов к дискуКеширование расчетов и данных с дискаПереход на NIO, бинарные протоколы,
внедрение сжатия
![Page 19: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/19.jpg)
Разделение ролейВынос баз данных на отдельные машиныРазнесение автономных модулей на
разные машиныСоздание дополнительных проксирующих
прослоек на других машинах+ Вышли за пределы одной машины- Повысили расходы на коммуникацию
![Page 20: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/20.jpg)
Вертикальное масштабированиеЗаменить в сервере процессорыВоткнуть туда больше памятиВставить быстрый RAID-контроллерЗаменить диски на SSDОбновить сетевой адаптерПереехать на новый сервер…Весело. Но дорого.
![Page 21: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/21.jpg)
Горизонтальное масштабированиеРаспараллелить выполнение программыУбрать критические секцииОблегчить работу с общими ресурсамиОбеспечить запуск на нескольких машинахРавномерно распределить нагрузкуМинимизировать связь между машинамиПолучать прирост пропускной способности
при росте числа машин
![Page 22: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/22.jpg)
Эластичное масштабированиеЛинейная пропорция между пропускной
способностью и объемом ресурсовВозможность подключения и отключения
машин к кластеру без его остановкиОтсутствие единой точки отказа
![Page 23: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/23.jpg)
Распределенные системыПромышленное программирование
![Page 24: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/24.jpg)
Архитектура распределенных систем
![Page 25: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/25.jpg)
Клиент-сервер
![Page 26: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/26.jpg)
Клиент-серверМонопольный контроль над БДПросто программироватьОтрисовка данных на клиенте (опц)Кросс-платформенность с помощью
портирования клиентовЕдиная точка отказаНельзя горизонтально масштабировать
![Page 27: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/27.jpg)
Толстый VS Тонкий клиентыТонкий клиент только посылает запросы и
отображает ответыТолстый клиент проводит некоторые расчеты
без запросов к серверуТонкий клиент проще в реализацииТолстый клиент сложнее, но быстрееНа толстом клиенте данные могут устаретьТолстый клиент плохо портируется
![Page 28: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/28.jpg)
Web-приложения
![Page 29: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/29.jpg)
Web-приложенияСтандартный протокол - HTTPСтандартный клиент - браузерСтандартные client-side средстваТяжелый, избыточный трафик*Слабая client-side производительностьПочти кросс-платформенноПроблемы с портируемостью графики
![Page 30: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/30.jpg)
Backend - Frontend - Client
![Page 31: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/31.jpg)
Backend - Frontend - ClientРазделение server-side на слоиМасштабирование каждого слоя отдельноВозможность дробить систему на частиОчень большой трафик внутри кластераЗначительно сложнее разработкаУзкая специализация разработчиков
![Page 32: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/32.jpg)
Service-Oriented Architecture (SOA)
![Page 33: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/33.jpg)
Service-Oriented Architecture (SOA)Физическое выделение отдельных
компонентов на отдельную машинуУменьшение связности между
компонентами - упрощение разработкиВозможность регулировать работу каждого
сервиса отдельноЗначительное усложнение адресации
внутри кластера
![Page 34: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/34.jpg)
Role-based адресацияЗакрепление за машиной роли - запуск на
ней определенных сервисовВсегда ясно, где подняты инстансы сервисаЛегкая стартовая конфигурация со сложным
“горячим” изменениемВозможно оптимально подобрать железо под
нужды конкретного сервиса
![Page 35: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/35.jpg)
Cloud-based адресацияВыделение пула машин, на которых могут
быть запущены разные сервисыГибкое переключение и оперативное
реагирование на нагрузку и сбоиПриходится абстрагироваться от железаНеобходима отдельная инфраструктура
для учета и управления кластером
![Page 36: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/36.jpg)
Межпроцессное взаимодействие
![Page 37: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/37.jpg)
Способы передачи данныхПередача файловОбщая база данныхРазделяемая памятьПотоки и каналы данныхОбщение через брокер
![Page 38: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/38.jpg)
Организация потоков данныхTransport-level потоки:
UNIX SocketTCP SocketUDP Stream
Protocol-level потоки:BinaryPlain text
![Page 39: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/39.jpg)
Прикладные протоколыTelnet - clear plain text over TCPHTTP - convention over plain text over TCPCORBA - binary, configurableSOAP, REST, XML-RPC - over HTTPApache Avro, Apache Thrift - binary over TCP…
![Page 40: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/40.jpg)
HTTPHyperText Transfer Protocol, 1992Plain Text, line-basedРазличные типы запросов - GET, POST,
PUT, HEAD, …Коды ответа - 200 ОК, 404 Not Found, … Заголовки - Content-Type:text/html, … Blobs via Base64
![Page 41: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/41.jpg)
RESTRepresentational State Transfer, 2000Over HTTPClient-ServerStateless (no sessions)CacheableUniform interfaceLayered
![Page 42: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/42.jpg)
REST: трактовка HTTP запросовGET /collection - получить всю коллекциюPUT /collection - заменить всю коллекциюPOST /collection - добавить элемент в коллекциюDELETE /collection - очистить коллекциюGET /collection/item - получить элемент по IDPUT /collection/item - заменить элемент по IDDELETE /collection/item - удалить элемент
![Page 43: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/43.jpg)
Промышленное программирование
Пользовательские интерфейсы
![Page 44: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/44.jpg)
Web-интерфейсыЗдесь должны быть слайды про
реализацию Web UI средствами Java, Thymeleaf и Spring Web MVC
Но нет
![Page 45: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/45.jpg)
Промышленное программирование
Угрозы безопасности
![Page 46: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/46.jpg)
Ахтунг!Эта лекция не дает исчерпывающего
списка возможных угрозЛекция призвана только лишь обратить
внимание на проблему, но не дает сколь-нибудь приемлемого решения
Tl;dr: кругом враги, приложения полны дыр, уделяйте внимание безопасности
![Page 47: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/47.jpg)
ТерминологияУгроза УязвимостьАтака
Подробнее: Т.Иващенко, Яндекс ШРИ
![Page 48: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/48.jpg)
Виды угрозОтказ в обслуживании (DoS)Перехват данных пользователяПодмена действий пользователяУтечка данных приложенияМодификация данных приложенияПерехват управленияПроникновение в незащищенную зону…
![Page 49: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/49.jpg)
Отказ в обслуживании (DoS)Генерация множества одновременных
запросов к приложениюЭксплуатация чувствительных к нагрузке
участков кода и методов APIИсчерпание аппаратных ресурсовДеградация сервиса вплоть до отказа
![Page 50: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/50.jpg)
Перехват данных пользователяСредства прослушки:
Незащищенные публичные сетиСнифферы трафикаПрокси (HTTP Proxy, NAT, анонимайзеры, …)
Спуфинг (подмена) ARP, IP, DNS, … Атаки Man-In-The-MiddleФишингСоциальная инженерия
![Page 51: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/51.jpg)
Подмена действий пользователяКража учетной записиКража сессии (авторизационной куки)Атаки MITM с модификацией запросовCross-Site Request Forgery (CSRF)Cross-Site Scripting (XSS)
![Page 52: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/52.jpg)
Утечка и модификация данныхИнъекции SQL, JS, Shell, XPath, …Неустойчивые к перебору идентификаторы
(пользователей, сессий, ресурсов, …) Служебные страницы без авторизацииУязвимости в серверном ПО
![Page 53: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/53.jpg)
Перехват управленияБезумные служебные страницыИнъекции исполняемого кодаShell-инъекцииУязвимости в бинарном коде ПОНедостаточно защищенные средства
удаленного администрирования
![Page 54: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/54.jpg)
Уровни угрозыВнешняя угроза
ИнъекцииВнутренняя угроза
Перехват управления системным пользователемПерехват управления суперпользователемПолучение доступа к базам данных (R, W)Компрометация системы внутридоменной
аутентификации
![Page 55: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/55.jpg)
Промышленное программирование
Защита приложения
![Page 56: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/56.jpg)
Защита транспортного уровняSSL/TLS: HTTPS
DSA для аутентификацииRSA+DH для обмена шифрамиAES/3DES/… для обмена трафиком
Защищает от:прослушки трафикаподмены ARP, IP, DNSатак MITM
![Page 57: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/57.jpg)
Аутентификация и авторизацияАутентификация - определение личности:
Учетные записиПользовательские сессииПодписывание (digesting) запросов
Авторизация - проверка уровня доступа:Роли пользователейГруппы и разрешения (Groups & Permissions)Раздельный доступ к ресурсам
![Page 58: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/58.jpg)
Защита аутентификацииШифрование учетных данных по пути от
клиента к серверу (сеансовым ключом)Хеширование идентификатора сессииСоленое хеширование паролей в БДМногофакторная аутентификация
Осложняет кражу учетной записи или сессии
![Page 59: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/59.jpg)
Валидация запросовЗащита от инъекций - экранирование,
prepared-запросы, отказ от exec()Совершение действий только на POSTCSRF-токены для веб-формRequest Digesting для REST API
![Page 60: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/60.jpg)
Защита ресурсовОбязательная авторизация всех запросовМаскировка идентификаторов ресурсовВынос служебных ресурсов в интранетСокрытие средств удаленного
администрирования в интранете
![Page 61: Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor](https://reader035.vdocuments.mx/reader035/viewer/2022081604/587991f31a28ab95318b5c45/html5/thumbnails/61.jpg)
Защита от (D)DoS и роботовПоиск подозрительной активности
(некорректные, неестественные запросы)Выявление типового поведения (краулеры,
накрутчики)Ограничение подозрительных подсетей
(интенсивный однотипный трафик)Сетевое оборудование с возможностью
анализа и ограничения трафика