Стажировка-­‐2015
Безопасность  в  web  приложениях
Стажировка-­‐2015
Идентификация  -­‐  процесс  
опознания  субъекта,  в  
результате  которого  выявляется  
уникальный  идентификатор  
опознаваемого  -­‐  логин,  email.

Идентификация,  аутентификация
Стажировка-­‐2015
Аутентификация  -­‐  процесс  
подтверждения  того,  что  
субъект  действительно  
является  тем,  за  кого  себя  
выдает.  
Идентификация,  аутентификация
Стажировка-­‐2015
• Что  знает  -­‐  пароль  
• Что  имеет  -­‐  телефон,  смарт  
карты  
• Кто  субъект  есть  -­‐  биометрия
Факторы  аутентификации
Стажировка-­‐2015
Двухфакторная  аутентификация  
-­‐  пароль(что  знаем)  +  смс  или  
генератор  ключей(что  имеем)
Факторы  аутентификации
Стажировка-­‐2015
Авторизация  -­‐  процесс  
проверки  прав  субъекта  на  
выполнение  данного  действия.  
Не  путать  с  аутентификацией!
Авторизация
Стажировка-­‐2015
Что  будет,  если  злоумышленник  
получит  хотя  бы  read-­‐only  
доступ  к  БД  пользователей?  
Как  избежать  компрометации  
паролей?
Хранение  паролей
Стажировка-­‐2015
Никогда  не  хранить  пароли  в  
открытом  виде.
Хранение  паролей
Стажировка-­‐2015
Хэширование  паролей.  
Хэш  функция  -­‐  односторонняя  ф-­‐ия,  
преобразующая  входные  данные  в  
выходной  набор  фиксированной  длины.  
Криптографически  стойкая  хэш  функция  
очень  трудно  обратима  и  устойчива  к  
коллизиям.  
MD5,  SHA,  Scrypt,  ГОСТ  Р  34.11-­‐2012
Хранение  паролей
Стажировка-­‐2015
• Поиск  хэш  коллизий:  H(a)  ==  
H(b)  
• Перебор  по  словарям  
• Радужные  таблица  
Атака  на  хэшированные  пароли
Стажировка-­‐2015
• Замедление  хэш  функций  -­‐  
много  раундов  хэширования  
• Увеличение  длины  хэша  
• Усложнение  паролей  
• Соль  -­‐  строка  криптографически  
случайных  данных
Атака  на  хэшированные  пароли
Стажировка-­‐2015
Hash(Password  +  Salt),  Salt  
Salt  =  криптографически!  
случайная  последовательность.  
Например,  UUIDv4
Криптографическая  соль
Стажировка-­‐2015
Cтандарт  формирования  ключа  
на  основе  пароля  
• BCrypt  
• PBKDF2  
Эти  функции  уже  используют  
соль
Production  ready
Стажировка-­‐2015
• XSS  -­‐  межсайтовый  скриптинг  
• CSRF  -­‐  межсайтовая  подделка  запросов  
• SQL-­‐инъекции  
• MITM  -­‐  человек  посередине  и  анализ  
траффика  
• Атаки  на  сервер  -­‐  взлом  ssh,  tomcat,  DB  
пароля
Интернет  атаки
Стажировка-­‐2015
• Экранирование  спец  символов  
html  ‘"&<>  
• фильтрация  запросов:  http://example.com/
search?q=<script>DoSomething();</script>  
• CSP  -­‐  список  откуда  можно  
загружать  js,  css  …  
• Использование  SSL
XSS  -­‐  межсайтовый  скриптинг
Стажировка-­‐2015
Внедрение  в  запрос  
произвольный  SQL  код.  
http://example.com?query=1+OR
+1=1  
SELECT  *  FROM  data  WHERE  id  =1  
OR  1=1;
SQL-­‐инъекции
Стажировка-­‐2015
• Экранирование  запросов  
• PrepareStatement  для  
параметризованных  запросов  
• не  использовать  
конкатенацию  строк  для  
построения  sql  запроса
SQL-­‐инъекции
Стажировка-­‐2015
Мэллори:  Привет,  Алиса!  Посмотри,  
какой  милый  котик:    
<img  src="http://bank.example.com/
withdraw?
account=Alice&amount=1000000&for=
Mallory">
CSRF  -­‐  межсайтовая  подделка  запроса
Стажировка-­‐2015
• Проверять  HTTP_REFERER  
• CSRF_TOKEN  на  каждой  
странице  
• Same  Origin  Policy(domain,  
port,  protocol)
CSRF  -­‐  межсайтовая  подделка  запроса
Стажировка-­‐2015
Атака  человек  посередине  
• Снифинг  -­‐  прослушивание  
• Подмена  пакетов
MITM
Стажировка-­‐2015
MITM,  
Стажировка-­‐2015
• HTTPS  =  HTTP  +  TLS(SSL)  
• Порт  443  вместо  80  
• Сертификат  -­‐  public+private  
• RSA,  Диффи-­‐Хеллман  для  обмена  
ключами    
• AES,  3DES,  RC4  -­‐  шифрование  трафика  
• SHA256/512  для  хэш  функций
HTTPS  
Стажировка-­‐2015
• Боты  сканируют  порты  
• Боты  подбирают  пароли  для  root  
по  ssh  
• Подбор  паролей  от  DB  
• Подбор  паролей  от  tomcat  manager  
• Поиск  jvm  remote  debug
Атаки  на  сервер
Стажировка-­‐2015
• Поменять  дефолтные  
порты(22,  5432,  8080)  
• Запретить  логин  под  root  по  ssh  
• Закрыть  доступ  к  БД  из  вне  
• Удалить  менеджера  tomcat  
• Запретить  debug
Атаки  на  сервер
Стажировка-­‐2015
• PNG  изображение  размером  
42кб  
• распаковка  займет  4,5  
петабайт  памяти  
PNG-­‐бомба
Стажировка-­‐2015
• http://security.stackexchange.com/questions/211/how-­‐
to-­‐securely-­‐hash-­‐passwords/31846#31846  
• http://habrahabr.ru/post/130965/  
• Брюс  Шнайер  -­‐  https://www.dropbox.com/s/
8pdjrt9rw8p4qt9/Bryus_Shnayer_-­‐
_Prikladnaya_kriptografia.pdf?dl=0  
• http://habrahabr.ru/post/235247/  
• http://docs.spring.io/spring-­‐security/site/docs/current/
reference/html/csrf.html#csrf-­‐using/  
• PNG-­‐бомба
Литература  

Стажировка-2015. Разработка. Занятие 11. Безопасность web-приложений