26
Стажировка2015 Безопасность в web приложениях

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

  • Upload
    7bits

  • View
    219

  • Download
    3

Embed Size (px)

Citation preview

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

Стажировка-­‐2015

Безопасность  в  web  приложениях

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

Стажировка-­‐2015

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

Идентификация,  аутентификация

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

Стажировка-­‐2015

Аутентификация  -­‐  процесс  подтверждения  того,  что  субъект  действительно  является  тем,  за  кого  себя  выдает.  

Идентификация,  аутентификация

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

Стажировка-­‐2015

• Что  знает  -­‐  пароль  • Что  имеет  -­‐  телефон,  смарт  карты  

• Кто  субъект  есть  -­‐  биометрия

Факторы  аутентификации

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

Стажировка-­‐2015

Двухфакторная  аутентификация  -­‐  пароль(что  знаем)  +  смс  или  генератор  ключей(что  имеем)

Факторы  аутентификации

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

Стажировка-­‐2015

Авторизация  -­‐  процесс  проверки  прав  субъекта  на  выполнение  данного  действия.  

Не  путать  с  аутентификацией!

Авторизация

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

Стажировка-­‐2015

Что  будет,  если  злоумышленник  получит  хотя  бы  read-­‐only  доступ  к  БД  пользователей?  Как  избежать  компрометации  паролей?

Хранение  паролей

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

Стажировка-­‐2015

Никогда  не  хранить  пароли  в  открытом  виде.

Хранение  паролей

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

Стажировка-­‐2015

Хэширование  паролей.  Хэш  функция  -­‐  односторонняя  ф-­‐ия,  преобразующая  входные  данные  в  выходной  набор  фиксированной  длины.  Криптографически  стойкая  хэш  функция  очень  трудно  обратима  и  устойчива  к  коллизиям.  MD5,  SHA,  Scrypt,  ГОСТ  Р  34.11-­‐2012

Хранение  паролей

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

Стажировка-­‐2015

• Поиск  хэш  коллизий:  H(a)  ==  H(b)  

• Перебор  по  словарям  • Радужные  таблица  

Атака  на  хэшированные  пароли

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

Стажировка-­‐2015

• Замедление  хэш  функций  -­‐  много  раундов  хэширования  

• Увеличение  длины  хэша  • Усложнение  паролей  • Соль  -­‐  строка  криптографически  случайных  данных

Атака  на  хэшированные  пароли

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

Стажировка-­‐2015

Hash(Password  +  Salt),  Salt  Salt  =  криптографически!  случайная  последовательность.  Например,  UUIDv4

Криптографическая  соль

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

Стажировка-­‐2015

Cтандарт  формирования  ключа  на  основе  пароля  • BCrypt  • PBKDF2  Эти  функции  уже  используют  соль

Production  ready

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

Стажировка-­‐2015

• XSS  -­‐  межсайтовый  скриптинг  • CSRF  -­‐  межсайтовая  подделка  запросов  • SQL-­‐инъекции  • MITM  -­‐  человек  посередине  и  анализ  траффика  

• Атаки  на  сервер  -­‐  взлом  ssh,  tomcat,  DB  пароля

Интернет  атаки

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

Стажировка-­‐2015

• Экранирование  спец  символов  html  ‘"&<>  

• фильтрация  запросов:  http://example.com/

search?q=<script>DoSomething();</script>  • CSP  -­‐  список  откуда  можно  загружать  js,  css  …  

• Использование  SSL

XSS  -­‐  межсайтовый  скриптинг

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

Стажировка-­‐2015

Внедрение  в  запрос  произвольный  SQL  код.  http://example.com?query=1+OR+1=1  SELECT  *  FROM  data  WHERE  id  =1  OR  1=1;

SQL-­‐инъекции

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

Стажировка-­‐2015

• Экранирование  запросов  • PrepareStatement  для  параметризованных  запросов  

• не  использовать  конкатенацию  строк  для  построения  sql  запроса

SQL-­‐инъекции

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

Стажировка-­‐2015

Мэллори:  Привет,  Алиса!  Посмотри,  какой  милый  котик:    

<img  src="http://bank.example.com/withdraw?account=Alice&amount=1000000&for=Mallory">

CSRF  -­‐  межсайтовая  подделка  запроса

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

Стажировка-­‐2015

• Проверять  HTTP_REFERER  • CSRF_TOKEN  на  каждой  странице  

• Same  Origin  Policy(domain,  port,  protocol)

CSRF  -­‐  межсайтовая  подделка  запроса

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

Стажировка-­‐2015

Атака  человек  посередине  • Снифинг  -­‐  прослушивание  • Подмена  пакетов

MITM

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

Стажировка-­‐2015

MITM,  

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

Стажировка-­‐2015

• HTTPS  =  HTTP  +  TLS(SSL)  • Порт  443  вместо  80  • Сертификат  -­‐  public+private  • RSA,  Диффи-­‐Хеллман  для  обмена  ключами    

• AES,  3DES,  RC4  -­‐  шифрование  трафика  • SHA256/512  для  хэш  функций

HTTPS  

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

Стажировка-­‐2015

• Боты  сканируют  порты  • Боты  подбирают  пароли  для  root  по  ssh  

• Подбор  паролей  от  DB  • Подбор  паролей  от  tomcat  manager  • Поиск  jvm  remote  debug

Атаки  на  сервер

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

Стажировка-­‐2015

• Поменять  дефолтные  порты(22,  5432,  8080)  

• Запретить  логин  под  root  по  ssh  • Закрыть  доступ  к  БД  из  вне  • Удалить  менеджера  tomcat  • Запретить  debug

Атаки  на  сервер

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

Стажировка-­‐2015

• PNG  изображение  размером  42кб  

• распаковка  займет  4,5  петабайт  памяти  

PNG-­‐бомба

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

Стажировка-­‐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-­‐бомба

Литература