SlideShare ist ein Scribd-Unternehmen logo
1 von 42
Информационная безопасность в
        веб - основы
Представляюсь на всякий случай

• Странствующий рыцарь
• root@.....com, root@......ru, root@......kz, …
  .
• Когда-то давно занимался битхаком
• Когда-то давно работал экспертом по
  инфобезопасности
• Меня можно нанять для добрых дел
Аудитория доклада

•   IT-бизнесмены
•   Архитекторы приложений
•   Инженеры-разработчики
•   Инженеры-эксплуатационщики
•   Системные администраторы
•   Просто хорошие люди
Disclaimer

• Все, о чем я расскажу, может оказаться
  ложью
• Ни один из приведенных примеров не
  имел места в действительности
• Если после моего доклада от вас ушла
  девушка, я не при чем
• Цель этой презентации не состоит в
  возбуждении ненависти или вражды к
  социальной группе «идиоты» либо иным
Предметная область

• Защита информации
• (Кстати, это очень скучно, кто не будет спать к
  концу доклада – тот security expert)
• Какой еще информации?
• В веб мы обрабатываем
  пользовательскую информацию, ее и
  будем защищать
• Чтобы защищать инфраструктуру, нужно
  ее сначала нарисовать
Театр начинается с вешалки,
• А защита информации – с построения модели
  угроз (threat modeling)
• Кто-то сказал «Microsoft»?
• Нет, Microsoft это не угроза, а создатель
  модели классификации угроз STRIDE
• И надстройки над Visio, которая позволяет не
  только считать ее падения, но и нарисовать
  модель угроз
STRIDE
• Spoofing – маскировка под другого субъекта
• Tampering – порча (подделка) данных
• Repudiation – отказ от авторства
• Information disclosure – раскрытие
  (сенситивной) информации
• Denial of service – отказ в обслуживании
• Elevation of privilege – повышение уровня
  привилегий
Информационная система (сайт)
• LAMP
• Хранилище пользовательских данных (M)
• Сервисы обработки и представления данных
  (A,P)
• Системные и инфраструктурные сервисы,
  платформа (L)
• С точки зрения информационной
  безопасности можно выделить субъекты и
  объекты безопасности
• Субъекты доступаются к объектам
Модели разграничения доступа
• DAC – discretionary access
  control, классическая модель Unix r/w/x bits
• MAC – mandatory access control, что-то
  военное
• RBAC – role-based access control, кто-то опять
  сказал «Microsoft»?
• Да, реализацию RBAC можно наблюдать в
  линейке MS Win NT (а старички скажут
  «Netware»)
• RBAC – очень популярная модель
Люди любят котиков
• Хватит теории, жги давай!
Еще немного теории
• Люди любят сокращения, вот еще одно
• POLP – principle of least privilege
• Каждый субъект безопасности должен иметь
  доступ только к тем объектам безопасности,
  которые необходимы ему для легитимного
  исполнения своих обязанностей
Хранилище данных (M) – S
• Spoofing?
• Внешние пользователи вообще не должны
  иметь доступа к хранилищу данных
• Если кто-то проник в сеть, то ему придется
  подделывать TCP-сессию, так как обмен
  информацией с базой данных обычно
  происходит неразрывно
• Можем считать, что это не проблема
Хранилище данных (M) – T,R
• Little Bobby Tables (http://xkcd.com/327)
• We will learn how to sanitize to sanitize our
  database inputs a bit l8r 
• Но это все еще не проблема хранилища
  данных
• С точки зрения хранилища данных все
  изменения «подписаны»
  пользователем, который их произвел
• Но это системный пользователь
• Да, это компромисс
Хранилище данных (M) – I
• Информацию можно разделить на
  сенситивную и не очень
• Зачем разделять, давайте зашифруем всё?
• …WHERE name LIKE ‘%ash%’…
• Зашифруем раздел на диске (минус – теперь
  для старта системы нужен человек)
• Зашифруем в базе то, что действительно
  сенситивно:
• Пароли
• Номера кредитных карт?
• Вы храните в базе номера кредитных карт???
Шифруем пароли
•   Где-то нужно держать ключ?
•   Сделаем лучше необратимое хэширование
•   md5($password)
•   vasya: 698d51a19d8a121ce581499d7b701668
    petya: 698d51a19d8a121ce581499d7b701668
•   Чему равно md5(‘111’)?
•   Rainbow tables
•   md5($salt . $password)
•   $salt – случайное число, сопоставляется
    пользователю и хранится где-то (в той же
    базе?)
Хэшируем пароли
• “MD5 GPU brute force speed exceed 200
  millions MD5 hash/second (default charset [a-
  z,0-9])”
• “As of 2011, commercial products are available
  that claim the ability to test up to 2,800,000,000
  passwords per second on a standard desktop
  computer using a high-end graphics processor”
  (NTLM hash)
• Используйте МЕДЛЕННЫЙ алгоритм (в
  настоящее время – SHA-512, Whirlpool)
• Key stretching, PBKDF2
Хранилище данных (M) – D
• Наблюдается в веб сплошь и рядом
• Практически всегда, первое, что отказывает
  при увеличении нагрузки на сайт – это
  хранилище
• Занимайтесь оптимизацией
  производительности
• Кэшируйте
• Кстати, про все это я читаю доклады
Хранилище данных (M) – E
• Если вы администрируете базу данных при
  помощи PHPMyAdmin – убейте себя
• Если вы администрируете базу данных по
  незащищенному удаленному соединению –
  убейте себя (или сделайте VPN)
• Если вы не умеете работать в локальной
  консоли сервера – убейте себя
• Не забывайте про POLP – системный
  пользователь приложения должен иметь
  доступ только к базе приложения
Хранилище данных (M) – E
• Создатели протокола MySQL уже немного
  позаботились о вас – пароль невозможно
  узнать, имея дапм протокола
• Пароль можно подсмотреть в
  конфигурационном файле вашего
  приложения
• Но это не проблема хранилища данных
Сервер приложений (A,P) – S
• Плохой пользователь может украсть cookie у
  хорошего и подделать его сессию
• Используйте SSL для шифрования канала,
  тогда плохой пользователь не сможет украсть
  cookie путем прослушивания канала
• Все еще можно украсть cookie из браузера
• Трекайте пользовательскую активность,
  чтобы по поведенческим шаблонам отличать
  плохого пользователя от хорошего
  («обычные» и «необычные» IP-адреса)
Сервер приложений (A,P) – T
• Сервер приложений хранит пользовательские
  данные – файлы, сессии, и ничего с этим мы
  поделать не можем
• Сервер приложений использует один
  системный аккаунт на все приложение
• Если приложений несколько – дайте им
  разные системные аккаунты!
• А лучше – разные виртуальные окружения!
• Не забывайте про POLP
• Вы уже делаете бэкапы?
• А контрольные суммы важных файлов вы
  считаете?
Сервер приложений (A,P) – R
• Сервер приложений – та часть
  системы, которая непосредственно
  взаимодействует с пользователем
• Перед тем, как изменить сенситивные
  данные по запросу пользователя, еще раз
  убедитесь, что он – это он (спросите пароль?)
• Хороший способ убедиться, что автор
  изменений это действительно автор
  изменений – выдать пользователю
  сертификат
• Всегда ведите логи важных изменений
Сервер приложений (A,P) – I
• Отключите вывод отладочной информации
  на продакшн системе (!!!)
• Хотите скрыть число реальных пользователей
  на проекте и все еще подставляете
  суррогатный ID пользователя в URL?
• Убрать версию софта из HTTP headers может
  быть не такой плохой идеей
• Обязательно защищайтесь от SQL
  injection, пока у вас не украли базу прямо
  через ваше приложение
SQL injection
• Little Bobby Tables is back again!
• Как защититься?
• В PHP есть миллион функций, которые, вроде
  бы, делают string escaping
• У OWASP есть библиотека, в которой есть
  функция...
• Используйте prepared statements и вообще
  забудьте про injection!
• Но не будьте наивны и не делайте prepared
  statement из строки, которая уже содержит
  переданные пользователем значения!
• Такая магия не работает!
Сервер приложений (A,P) – D
• На одном слайде рассказать обо всем
  невозможно
• Учитесь отличать мусорные запросы от
  настоящих
• Заведите систему автоматической
  классификации трафика («нарисуйте сову»)
• Кстати, такая система есть у московской
  компании Highload Lab
• Не используйте для блокирования мусорных
  запросов стоковый iptables
• Используйте ipset или аналоги
Сервер приложений (A,P) – E
• Никогда не запускайте сервер приложений с
  правами пользователя root
• Если в приложении существуют различные
  уровни доступа, потратьте время на создание
  внутреннего security framework и обязательно
  покройте его unit тестами
• Интегрируйте в систему этот security
  framework таким образом, чтобы его было
  трудно обойти
• Перед выполнением какой-то операции
  проверяйте роли и права пользователя
Сервер приложений (A,P) – E
• Защищайтесь от подбора пароля – CAPTCHA,
  блокирование IP после нескольких неудачных
  попыток
• Требуйте от пользователя соответствия
  password policy
• Умейте выделять неожиданное поведение
  пользователя – для этого трекайте его
  ожидаемое поведение (IP адреса, UA)
• Введите двухфакторную аутентификацию
  (например, через SMS)
• Но сделайте ее удобной
Платформа (L) – S
• Всю служебную коммуникацию с системой
  (деплоймент, обслуживание) проводите по
  шифрованным каналам
• Для установления шифрованного соединения
  применяйте двухфакторную аутентификацию
  (IP-адрес + ключ, IP-адрес + пароль)
Платформа (L) – T
• Используйте AIDE, Tripwire или аналоги для
  отслеживания целостности компонентов
  платформы (конфигурационных файлов, etc)
• Вы уже делаете бэкапы?
• Создайте централизованный лог-сервер и
  ведите логи на него (syslog это позволяет)
• Lennart Poettering знает, как правильно вести
  логи и скоро научит нас всех (лог-файлы будут
  криптографически подписаны)
Платформа (L) – R
• Про логи на отдельный сервер я уже говорил?
• Раздайте пользователям ssh ключи с
  паролями и пусть ходят по ключам – ключ
  невозможно подобрать подбором
• Не давайте никому заходить удаленно под
  пользователем root, пусть ходят под
  именными логинами и делают su или sudo
• Регулярно проверяйте, что эти правила
  выполняются
Платформа (L) – I
• Установите и настройте
  Grsecurity, SELinux, RSBAC, AppArmor или
  Tomoyo – будет не очень легко, но вы
  справитесь, если захотите
• Используя POLP и permissive mode указанных
  выше систем, раздайте системным
  пользователям нужное количество прав
• Включите enforcing mode
• Можно использовать POSIX ACLs для более
  точной раздачи прав
Платформа (L) – D
• Используйте систему сбора статистики и
  оповещения (NAGIOS, Icinga, Zabbix, etc)
• Используйте возможности системы по
  ограничению количества потребляемых
  сервисами/системными пользователями
  ресурсов
• Используйте виртуализацию и ограничивайте
  виртуальные машины в ресурсах
• Не держите важные и второстепенные
  сервисы на одном физическом хосте
Платформа (L) – E
• Защищайтесь от подбора пароля
  (используйте демоны DenyHosts, fail2ban или
  аналоги)
• Перенести сервисы на другие порты?
• Думаете, атакующий их не узнает? 
• Port knocking
• Организация VPN для доступа к внутренним
  инфраструктурным сервисам
• Обязательно применение security updates для
  используемых сервисов – регулярно
  находятся и устраняются remote vulnerabilities
Все?
•   Сервер мы защитили
•   Но остался еще пользователь
•   А у пользователя есть браузер
•   Который тоже представляет из себя
    информационную систему
Браузер – S
• Сплошь и рядом – браузер не может отличить
  JavaScript-приложение, попавшее в него в
  результате срабатывания XSS-уязвимости на
  сайте от легальных действий пользователя
• А ведь есть еще и CSRF-атаки
XSS
• <script>alert(“Hello, I’m a hacker!”)</script>
• А разгадка одна – слишком высокий уровень
  доверия к введенным пользователем данным
• Безжалостно режьте или экранируйте все, что
  браузер мог бы интерпретировать как JS
• В библиотеке OWASP есть одна функция...
• А в PHP их миллион
• Общий принцип: доверие к
  пользовательским данным должно быть
  минимальным
CSRF
• Cross Site Request Forgery
• Хороший пользователь залогинен на сайте
  a.com
• Сайт a.com позволяет менять состояние через
  GET-запрос
• Пользователь идет на сайт
  злоумышленника, где ему формируют GET-
  запрос, меняющий состояние на сайте a.com
• Защититься легко – различайте GET и POST и
  ставьте one-time challenges в формы
Браузер – T,R,D
• Раньше браузер не хранил ничего, кроме
  cookies, теперь есть еще local file storage
• Наверняка появится много новых интересных
  проблем, связанных с его безопасностью
• Ваш браузер – это вы, на серверной стороне
  небезосновательно считают, что с той
  стороны вашего браузера вы, и никто другой
• Особенно, если вы прошли аутентификацию
• И сложно будет доказать обратное
• DoS браузера? Нет, не слышал
Браузер – I,E
• Раскрытие информации происходит сплошь и
  рядом благодаря XSS уязвимостям
• Как ни странно, в браузере возможно и
  повышение привилегий:
  http://habrahabr.ru/company/dsec/blog/14168
  4/
• Подобные уязвимости находят и исправляют
  постоянно, всегда следите за апдейтами
  ваших браузеров
Литература
• Rainbow series (good luck!)
• OWASP Guide
• Security mailing lists используемых вами
  дистрибутива, сервера приложений, etc
• http://security.stackexchange.com
• Журнал «Хакер»
Вопросы?
•
•
•
•
•
•
Контакты
•   alexclear@gmail.com
•   http://alexclear.livejournal.com
•   http://github.com/alexclear
•   skype://demeliorator

Weitere ähnliche Inhalte

Was ist angesagt?

Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)Ontico
 
Cоциальный граф "Одноклассников" в myTarget
Cоциальный граф "Одноклассников" в myTargetCоциальный граф "Одноклассников" в myTarget
Cоциальный граф "Одноклассников" в myTargetOleg Tsarev
 
Как сделать сложное простым. История создания Проект1917 / Сергей Спорышев (I...
Как сделать сложное простым. История создания Проект1917 / Сергей Спорышев (I...Как сделать сложное простым. История создания Проект1917 / Сергей Спорышев (I...
Как сделать сложное простым. История создания Проект1917 / Сергей Спорышев (I...Ontico
 
MySQL: чек-лист для новичка в highload (Cвета Cмирнова, Aнастасия Распопина ...
MySQL:  чек-лист для новичка в highload (Cвета Cмирнова, Aнастасия Распопина ...MySQL:  чек-лист для новичка в highload (Cвета Cмирнова, Aнастасия Распопина ...
MySQL: чек-лист для новичка в highload (Cвета Cмирнова, Aнастасия Распопина ...Anastasia Rostova
 
So Your WAF Needs a Parser
So Your WAF Needs a ParserSo Your WAF Needs a Parser
So Your WAF Needs a Parseryalegko
 
Безопасное программирование на C#
Безопасное программирование на C#Безопасное программирование на C#
Безопасное программирование на C#Darya Zubova
 
Что нового в MySQL 8.0? / Дмитрий Ленев (Oracle)
Что нового в MySQL 8.0? / Дмитрий Ленев (Oracle)Что нового в MySQL 8.0? / Дмитрий Ленев (Oracle)
Что нового в MySQL 8.0? / Дмитрий Ленев (Oracle)Ontico
 
Машинное обучение в электронной коммерции - практика использования и подводны...
Машинное обучение в электронной коммерции - практика использования и подводны...Машинное обучение в электронной коммерции - практика использования и подводны...
Машинное обучение в электронной коммерции - практика использования и подводны...Ontico
 
Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)
Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)
Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)Ontico
 
How to cook a blockchain and not get burned
How to cook a blockchain and not get burned How to cook a blockchain and not get burned
How to cook a blockchain and not get burned Alexander Syrotenko
 
14 HappyDev-lite-2015 autumn. Дмитрий Вахрушев. Зачем вам изучать Python?
14 HappyDev-lite-2015 autumn. Дмитрий Вахрушев. Зачем вам изучать Python?14 HappyDev-lite-2015 autumn. Дмитрий Вахрушев. Зачем вам изучать Python?
14 HappyDev-lite-2015 autumn. Дмитрий Вахрушев. Зачем вам изучать Python?HappyDev-lite
 
ТОП ошибок в инфраструктуре, мешающих высоким нагрузкам / Андрей Половов (Флант)
ТОП ошибок в инфраструктуре, мешающих высоким нагрузкам / Андрей Половов (Флант)ТОП ошибок в инфраструктуре, мешающих высоким нагрузкам / Андрей Половов (Флант)
ТОП ошибок в инфраструктуре, мешающих высоким нагрузкам / Андрей Половов (Флант)Ontico
 
Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...
Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...
Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...Ontico
 

Was ist angesagt? (13)

Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
 
Cоциальный граф "Одноклассников" в myTarget
Cоциальный граф "Одноклассников" в myTargetCоциальный граф "Одноклассников" в myTarget
Cоциальный граф "Одноклассников" в myTarget
 
Как сделать сложное простым. История создания Проект1917 / Сергей Спорышев (I...
Как сделать сложное простым. История создания Проект1917 / Сергей Спорышев (I...Как сделать сложное простым. История создания Проект1917 / Сергей Спорышев (I...
Как сделать сложное простым. История создания Проект1917 / Сергей Спорышев (I...
 
MySQL: чек-лист для новичка в highload (Cвета Cмирнова, Aнастасия Распопина ...
MySQL:  чек-лист для новичка в highload (Cвета Cмирнова, Aнастасия Распопина ...MySQL:  чек-лист для новичка в highload (Cвета Cмирнова, Aнастасия Распопина ...
MySQL: чек-лист для новичка в highload (Cвета Cмирнова, Aнастасия Распопина ...
 
So Your WAF Needs a Parser
So Your WAF Needs a ParserSo Your WAF Needs a Parser
So Your WAF Needs a Parser
 
Безопасное программирование на C#
Безопасное программирование на C#Безопасное программирование на C#
Безопасное программирование на C#
 
Что нового в MySQL 8.0? / Дмитрий Ленев (Oracle)
Что нового в MySQL 8.0? / Дмитрий Ленев (Oracle)Что нового в MySQL 8.0? / Дмитрий Ленев (Oracle)
Что нового в MySQL 8.0? / Дмитрий Ленев (Oracle)
 
Машинное обучение в электронной коммерции - практика использования и подводны...
Машинное обучение в электронной коммерции - практика использования и подводны...Машинное обучение в электронной коммерции - практика использования и подводны...
Машинное обучение в электронной коммерции - практика использования и подводны...
 
Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)
Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)
Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)
 
How to cook a blockchain and not get burned
How to cook a blockchain and not get burned How to cook a blockchain and not get burned
How to cook a blockchain and not get burned
 
14 HappyDev-lite-2015 autumn. Дмитрий Вахрушев. Зачем вам изучать Python?
14 HappyDev-lite-2015 autumn. Дмитрий Вахрушев. Зачем вам изучать Python?14 HappyDev-lite-2015 autumn. Дмитрий Вахрушев. Зачем вам изучать Python?
14 HappyDev-lite-2015 autumn. Дмитрий Вахрушев. Зачем вам изучать Python?
 
ТОП ошибок в инфраструктуре, мешающих высоким нагрузкам / Андрей Половов (Флант)
ТОП ошибок в инфраструктуре, мешающих высоким нагрузкам / Андрей Половов (Флант)ТОП ошибок в инфраструктуре, мешающих высоким нагрузкам / Андрей Половов (Флант)
ТОП ошибок в инфраструктуре, мешающих высоким нагрузкам / Андрей Половов (Флант)
 
Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...
Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...
Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...
 

Andere mochten auch

Cекреты соответствия PCI DSS
Cекреты соответствия PCI DSSCекреты соответствия PCI DSS
Cекреты соответствия PCI DSSabondarenko
 
Защита персональных данных на финансовом и пенсионном рынках 2.0
Защита персональных данных на финансовом и пенсионном рынках   2.0Защита персональных данных на финансовом и пенсионном рынках   2.0
Защита персональных данных на финансовом и пенсионном рынках 2.0abondarenko
 
2011 форум директоров по иб
2011   форум директоров по иб2011   форум директоров по иб
2011 форум директоров по ибabondarenko
 
О персональных данных и не только
О персональных данных и не толькоО персональных данных и не только
О персональных данных и не толькоabondarenko
 
Infosecurity 2011 - Менеджер по информационной безопасности 2.0
Infosecurity 2011 - Менеджер по информационной безопасности 2.0Infosecurity 2011 - Менеджер по информационной безопасности 2.0
Infosecurity 2011 - Менеджер по информационной безопасности 2.0abondarenko
 
Риски использования облачных технологий
Риски использования облачных технологийРиски использования облачных технологий
Риски использования облачных технологийabondarenko
 

Andere mochten auch (6)

Cекреты соответствия PCI DSS
Cекреты соответствия PCI DSSCекреты соответствия PCI DSS
Cекреты соответствия PCI DSS
 
Защита персональных данных на финансовом и пенсионном рынках 2.0
Защита персональных данных на финансовом и пенсионном рынках   2.0Защита персональных данных на финансовом и пенсионном рынках   2.0
Защита персональных данных на финансовом и пенсионном рынках 2.0
 
2011 форум директоров по иб
2011   форум директоров по иб2011   форум директоров по иб
2011 форум директоров по иб
 
О персональных данных и не только
О персональных данных и не толькоО персональных данных и не только
О персональных данных и не только
 
Infosecurity 2011 - Менеджер по информационной безопасности 2.0
Infosecurity 2011 - Менеджер по информационной безопасности 2.0Infosecurity 2011 - Менеджер по информационной безопасности 2.0
Infosecurity 2011 - Менеджер по информационной безопасности 2.0
 
Риски использования облачных технологий
Риски использования облачных технологийРиски использования облачных технологий
Риски использования облачных технологий
 

Ähnlich wie Информационная безопасность в веб - основы

[DagCTF 2015] Hacking motivation
[DagCTF 2015] Hacking motivation[DagCTF 2015] Hacking motivation
[DagCTF 2015] Hacking motivationbeched
 
2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, ParallelsNikolay Samokhvalov
 
Практика эксплуатации уязвимостей в прикладных программах
Практика эксплуатации уязвимостей в прикладных программах Практика эксплуатации уязвимостей в прикладных программах
Практика эксплуатации уязвимостей в прикладных программах solertia
 
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...IT-Portfolio
 
Pt infosec - 2014 - импортозамещение
Pt   infosec - 2014 - импортозамещениеPt   infosec - 2014 - импортозамещение
Pt infosec - 2014 - импортозамещениеqqlan
 
Александр Коротин. Безопасность систем управления турбинами в электроэнергетике
Александр Коротин. Безопасность систем управления турбинами в электроэнергетикеАлександр Коротин. Безопасность систем управления турбинами в электроэнергетике
Александр Коротин. Безопасность систем управления турбинами в электроэнергетикеKaspersky
 
Борьба с вредоносным кодом: от базовых мер к целостной стратегии
Борьба с вредоносным кодом: от базовых мер к целостной стратегииБорьба с вредоносным кодом: от базовых мер к целостной стратегии
Борьба с вредоносным кодом: от базовых мер к целостной стратегииAleksey Lukatskiy
 
И снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел ТайкалоИ снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел ТайкалоStanfy
 
SPA инструменты
SPA инструментыSPA инструменты
SPA инструментыRoman Dvornov
 
Мастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатацииМастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатацииNikolay Sivko
 
Информационная безопасность и web-приложения
Информационная безопасность и web-приложенияИнформационная безопасность и web-приложения
Информационная безопасность и web-приложенияMaxim Krentovskiy
 
Daemons In Web on #devrus
Daemons In Web on #devrusDaemons In Web on #devrus
Daemons In Web on #devrusAlex Chistyakov
 
Практические особенности внедрения систем класса DLP
Практические особенности внедрения систем класса DLPПрактические особенности внедрения систем класса DLP
Практические особенности внедрения систем класса DLPDialogueScience
 
Как превратить приложение в платформу
Как превратить приложение в платформуКак превратить приложение в платформу
Как превратить приложение в платформуVadim Kruchkov
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновOntico
 
Оптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaОптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaAlex Chistyakov
 
Практические особенности внедрения систем класса DLP
Практические особенности внедрения систем класса DLPПрактические особенности внедрения систем класса DLP
Практические особенности внедрения систем класса DLPDialogueScience
 
«Взломать за 60 секунд», Артем Кулаков, Redmadrobot
«Взломать за 60 секунд», Артем Кулаков, Redmadrobot«Взломать за 60 секунд», Артем Кулаков, Redmadrobot
«Взломать за 60 секунд», Артем Кулаков, RedmadrobotMail.ru Group
 

Ähnlich wie Информационная безопасность в веб - основы (20)

[DagCTF 2015] Hacking motivation
[DagCTF 2015] Hacking motivation[DagCTF 2015] Hacking motivation
[DagCTF 2015] Hacking motivation
 
2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels
 
Практика эксплуатации уязвимостей в прикладных программах
Практика эксплуатации уязвимостей в прикладных программах Практика эксплуатации уязвимостей в прикладных программах
Практика эксплуатации уязвимостей в прикладных программах
 
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
 
Pt infosec - 2014 - импортозамещение
Pt   infosec - 2014 - импортозамещениеPt   infosec - 2014 - импортозамещение
Pt infosec - 2014 - импортозамещение
 
RuSIEM
RuSIEMRuSIEM
RuSIEM
 
Александр Коротин. Безопасность систем управления турбинами в электроэнергетике
Александр Коротин. Безопасность систем управления турбинами в электроэнергетикеАлександр Коротин. Безопасность систем управления турбинами в электроэнергетике
Александр Коротин. Безопасность систем управления турбинами в электроэнергетике
 
Борьба с вредоносным кодом: от базовых мер к целостной стратегии
Борьба с вредоносным кодом: от базовых мер к целостной стратегииБорьба с вредоносным кодом: от базовых мер к целостной стратегии
Борьба с вредоносным кодом: от базовых мер к целостной стратегии
 
И снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел ТайкалоИ снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел Тайкало
 
SPA инструменты
SPA инструментыSPA инструменты
SPA инструменты
 
Sivko
SivkoSivko
Sivko
 
Мастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатацииМастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатации
 
Информационная безопасность и web-приложения
Информационная безопасность и web-приложенияИнформационная безопасность и web-приложения
Информационная безопасность и web-приложения
 
Daemons In Web on #devrus
Daemons In Web on #devrusDaemons In Web on #devrus
Daemons In Web on #devrus
 
Практические особенности внедрения систем класса DLP
Практические особенности внедрения систем класса DLPПрактические особенности внедрения систем класса DLP
Практические особенности внедрения систем класса DLP
 
Как превратить приложение в платформу
Как превратить приложение в платформуКак превратить приложение в платформу
Как превратить приложение в платформу
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий Насретдинов
 
Оптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaОптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на Java
 
Практические особенности внедрения систем класса DLP
Практические особенности внедрения систем класса DLPПрактические особенности внедрения систем класса DLP
Практические особенности внедрения систем класса DLP
 
«Взломать за 60 секунд», Артем Кулаков, Redmadrobot
«Взломать за 60 секунд», Артем Кулаков, Redmadrobot«Взломать за 60 секунд», Артем Кулаков, Redmadrobot
«Взломать за 60 секунд», Артем Кулаков, Redmadrobot
 

Mehr von Alex Chistyakov

My slides from DevOpsDays 2019
My slides from DevOpsDays 2019My slides from DevOpsDays 2019
My slides from DevOpsDays 2019Alex Chistyakov
 
My slides from BMM №3 May 2019
My slides from BMM №3 May 2019My slides from BMM №3 May 2019
My slides from BMM №3 May 2019Alex Chistyakov
 
My slides from DevOps-40 meetup Jun 2019
My slides from DevOps-40 meetup Jun 2019 My slides from DevOps-40 meetup Jun 2019
My slides from DevOps-40 meetup Jun 2019 Alex Chistyakov
 
My slides from SECR'2018
My slides from SECR'2018My slides from SECR'2018
My slides from SECR'2018Alex Chistyakov
 
My slides from the first SPb SRE community meetup at DataArt
My slides from the first SPb SRE community meetup at DataArtMy slides from the first SPb SRE community meetup at DataArt
My slides from the first SPb SRE community meetup at DataArtAlex Chistyakov
 
My slides from BMM №4 Nov 2019
My slides from BMM №4 Nov 2019My slides from BMM №4 Nov 2019
My slides from BMM №4 Nov 2019Alex Chistyakov
 
My slides from DevOps-40 meetup Oct 2019
My slides from DevOps-40 meetup Oct 2019My slides from DevOps-40 meetup Oct 2019
My slides from DevOps-40 meetup Oct 2019Alex Chistyakov
 
My slides from DevOps-40 meetup Dec 2019
My slides from DevOps-40 meetup Dec 2019My slides from DevOps-40 meetup Dec 2019
My slides from DevOps-40 meetup Dec 2019Alex Chistyakov
 
Configuration management and Kubernetes
Configuration management and KubernetesConfiguration management and Kubernetes
Configuration management and KubernetesAlex Chistyakov
 
Python performance engineering in 2017
Python performance engineering in 2017Python performance engineering in 2017
Python performance engineering in 2017Alex Chistyakov
 
My talk at SPb SQA sub-meetup of ITGM
My talk at SPb SQA sub-meetup of ITGMMy talk at SPb SQA sub-meetup of ITGM
My talk at SPb SQA sub-meetup of ITGMAlex Chistyakov
 
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017Alex Chistyakov
 
My talk on GitHub open data at ITGM #10
 My talk on GitHub open data at ITGM #10 My talk on GitHub open data at ITGM #10
My talk on GitHub open data at ITGM #10Alex Chistyakov
 
My talk on DevOps :) at Stachka 2017
My talk on DevOps :) at Stachka 2017My talk on DevOps :) at Stachka 2017
My talk on DevOps :) at Stachka 2017Alex Chistyakov
 

Mehr von Alex Chistyakov (20)

My slides from DevOpsDays 2019
My slides from DevOpsDays 2019My slides from DevOpsDays 2019
My slides from DevOpsDays 2019
 
My slides from BMM №3 May 2019
My slides from BMM №3 May 2019My slides from BMM №3 May 2019
My slides from BMM №3 May 2019
 
My slides from DevOps-40 meetup Jun 2019
My slides from DevOps-40 meetup Jun 2019 My slides from DevOps-40 meetup Jun 2019
My slides from DevOps-40 meetup Jun 2019
 
My slides from SECR'2018
My slides from SECR'2018My slides from SECR'2018
My slides from SECR'2018
 
My slides from the first SPb SRE community meetup at DataArt
My slides from the first SPb SRE community meetup at DataArtMy slides from the first SPb SRE community meetup at DataArt
My slides from the first SPb SRE community meetup at DataArt
 
My slides from CC'2019
My slides from CC'2019My slides from CC'2019
My slides from CC'2019
 
My slides from BMM №4 Nov 2019
My slides from BMM №4 Nov 2019My slides from BMM №4 Nov 2019
My slides from BMM №4 Nov 2019
 
My slides from DevOps-40 meetup Oct 2019
My slides from DevOps-40 meetup Oct 2019My slides from DevOps-40 meetup Oct 2019
My slides from DevOps-40 meetup Oct 2019
 
My slides from DevOps-40 meetup Dec 2019
My slides from DevOps-40 meetup Dec 2019My slides from DevOps-40 meetup Dec 2019
My slides from DevOps-40 meetup Dec 2019
 
Configuration management and Kubernetes
Configuration management and KubernetesConfiguration management and Kubernetes
Configuration management and Kubernetes
 
Ansible and other stuff
Ansible and other stuffAnsible and other stuff
Ansible and other stuff
 
Python performance engineering in 2017
Python performance engineering in 2017Python performance engineering in 2017
Python performance engineering in 2017
 
My talk at SPb SQA sub-meetup of ITGM
My talk at SPb SQA sub-meetup of ITGMMy talk at SPb SQA sub-meetup of ITGM
My talk at SPb SQA sub-meetup of ITGM
 
My talk at SECR 2017
My talk at SECR 2017My talk at SECR 2017
My talk at SECR 2017
 
On scaling teams
On scaling teamsOn scaling teams
On scaling teams
 
MariaDB workshop
MariaDB workshopMariaDB workshop
MariaDB workshop
 
Docker for JS people
Docker for JS peopleDocker for JS people
Docker for JS people
 
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
 
My talk on GitHub open data at ITGM #10
 My talk on GitHub open data at ITGM #10 My talk on GitHub open data at ITGM #10
My talk on GitHub open data at ITGM #10
 
My talk on DevOps :) at Stachka 2017
My talk on DevOps :) at Stachka 2017My talk on DevOps :) at Stachka 2017
My talk on DevOps :) at Stachka 2017
 

Информационная безопасность в веб - основы

  • 2. Представляюсь на всякий случай • Странствующий рыцарь • root@.....com, root@......ru, root@......kz, … . • Когда-то давно занимался битхаком • Когда-то давно работал экспертом по инфобезопасности • Меня можно нанять для добрых дел
  • 3. Аудитория доклада • IT-бизнесмены • Архитекторы приложений • Инженеры-разработчики • Инженеры-эксплуатационщики • Системные администраторы • Просто хорошие люди
  • 4. Disclaimer • Все, о чем я расскажу, может оказаться ложью • Ни один из приведенных примеров не имел места в действительности • Если после моего доклада от вас ушла девушка, я не при чем • Цель этой презентации не состоит в возбуждении ненависти или вражды к социальной группе «идиоты» либо иным
  • 5. Предметная область • Защита информации • (Кстати, это очень скучно, кто не будет спать к концу доклада – тот security expert) • Какой еще информации? • В веб мы обрабатываем пользовательскую информацию, ее и будем защищать • Чтобы защищать инфраструктуру, нужно ее сначала нарисовать
  • 6. Театр начинается с вешалки, • А защита информации – с построения модели угроз (threat modeling) • Кто-то сказал «Microsoft»? • Нет, Microsoft это не угроза, а создатель модели классификации угроз STRIDE • И надстройки над Visio, которая позволяет не только считать ее падения, но и нарисовать модель угроз
  • 7. STRIDE • Spoofing – маскировка под другого субъекта • Tampering – порча (подделка) данных • Repudiation – отказ от авторства • Information disclosure – раскрытие (сенситивной) информации • Denial of service – отказ в обслуживании • Elevation of privilege – повышение уровня привилегий
  • 8. Информационная система (сайт) • LAMP • Хранилище пользовательских данных (M) • Сервисы обработки и представления данных (A,P) • Системные и инфраструктурные сервисы, платформа (L) • С точки зрения информационной безопасности можно выделить субъекты и объекты безопасности • Субъекты доступаются к объектам
  • 9. Модели разграничения доступа • DAC – discretionary access control, классическая модель Unix r/w/x bits • MAC – mandatory access control, что-то военное • RBAC – role-based access control, кто-то опять сказал «Microsoft»? • Да, реализацию RBAC можно наблюдать в линейке MS Win NT (а старички скажут «Netware») • RBAC – очень популярная модель
  • 10. Люди любят котиков • Хватит теории, жги давай!
  • 11. Еще немного теории • Люди любят сокращения, вот еще одно • POLP – principle of least privilege • Каждый субъект безопасности должен иметь доступ только к тем объектам безопасности, которые необходимы ему для легитимного исполнения своих обязанностей
  • 12. Хранилище данных (M) – S • Spoofing? • Внешние пользователи вообще не должны иметь доступа к хранилищу данных • Если кто-то проник в сеть, то ему придется подделывать TCP-сессию, так как обмен информацией с базой данных обычно происходит неразрывно • Можем считать, что это не проблема
  • 13. Хранилище данных (M) – T,R • Little Bobby Tables (http://xkcd.com/327) • We will learn how to sanitize to sanitize our database inputs a bit l8r  • Но это все еще не проблема хранилища данных • С точки зрения хранилища данных все изменения «подписаны» пользователем, который их произвел • Но это системный пользователь • Да, это компромисс
  • 14. Хранилище данных (M) – I • Информацию можно разделить на сенситивную и не очень • Зачем разделять, давайте зашифруем всё? • …WHERE name LIKE ‘%ash%’… • Зашифруем раздел на диске (минус – теперь для старта системы нужен человек) • Зашифруем в базе то, что действительно сенситивно: • Пароли • Номера кредитных карт? • Вы храните в базе номера кредитных карт???
  • 15. Шифруем пароли • Где-то нужно держать ключ? • Сделаем лучше необратимое хэширование • md5($password) • vasya: 698d51a19d8a121ce581499d7b701668 petya: 698d51a19d8a121ce581499d7b701668 • Чему равно md5(‘111’)? • Rainbow tables • md5($salt . $password) • $salt – случайное число, сопоставляется пользователю и хранится где-то (в той же базе?)
  • 16. Хэшируем пароли • “MD5 GPU brute force speed exceed 200 millions MD5 hash/second (default charset [a- z,0-9])” • “As of 2011, commercial products are available that claim the ability to test up to 2,800,000,000 passwords per second on a standard desktop computer using a high-end graphics processor” (NTLM hash) • Используйте МЕДЛЕННЫЙ алгоритм (в настоящее время – SHA-512, Whirlpool) • Key stretching, PBKDF2
  • 17. Хранилище данных (M) – D • Наблюдается в веб сплошь и рядом • Практически всегда, первое, что отказывает при увеличении нагрузки на сайт – это хранилище • Занимайтесь оптимизацией производительности • Кэшируйте • Кстати, про все это я читаю доклады
  • 18. Хранилище данных (M) – E • Если вы администрируете базу данных при помощи PHPMyAdmin – убейте себя • Если вы администрируете базу данных по незащищенному удаленному соединению – убейте себя (или сделайте VPN) • Если вы не умеете работать в локальной консоли сервера – убейте себя • Не забывайте про POLP – системный пользователь приложения должен иметь доступ только к базе приложения
  • 19. Хранилище данных (M) – E • Создатели протокола MySQL уже немного позаботились о вас – пароль невозможно узнать, имея дапм протокола • Пароль можно подсмотреть в конфигурационном файле вашего приложения • Но это не проблема хранилища данных
  • 20. Сервер приложений (A,P) – S • Плохой пользователь может украсть cookie у хорошего и подделать его сессию • Используйте SSL для шифрования канала, тогда плохой пользователь не сможет украсть cookie путем прослушивания канала • Все еще можно украсть cookie из браузера • Трекайте пользовательскую активность, чтобы по поведенческим шаблонам отличать плохого пользователя от хорошего («обычные» и «необычные» IP-адреса)
  • 21. Сервер приложений (A,P) – T • Сервер приложений хранит пользовательские данные – файлы, сессии, и ничего с этим мы поделать не можем • Сервер приложений использует один системный аккаунт на все приложение • Если приложений несколько – дайте им разные системные аккаунты! • А лучше – разные виртуальные окружения! • Не забывайте про POLP • Вы уже делаете бэкапы? • А контрольные суммы важных файлов вы считаете?
  • 22. Сервер приложений (A,P) – R • Сервер приложений – та часть системы, которая непосредственно взаимодействует с пользователем • Перед тем, как изменить сенситивные данные по запросу пользователя, еще раз убедитесь, что он – это он (спросите пароль?) • Хороший способ убедиться, что автор изменений это действительно автор изменений – выдать пользователю сертификат • Всегда ведите логи важных изменений
  • 23. Сервер приложений (A,P) – I • Отключите вывод отладочной информации на продакшн системе (!!!) • Хотите скрыть число реальных пользователей на проекте и все еще подставляете суррогатный ID пользователя в URL? • Убрать версию софта из HTTP headers может быть не такой плохой идеей • Обязательно защищайтесь от SQL injection, пока у вас не украли базу прямо через ваше приложение
  • 24. SQL injection • Little Bobby Tables is back again! • Как защититься? • В PHP есть миллион функций, которые, вроде бы, делают string escaping • У OWASP есть библиотека, в которой есть функция... • Используйте prepared statements и вообще забудьте про injection! • Но не будьте наивны и не делайте prepared statement из строки, которая уже содержит переданные пользователем значения! • Такая магия не работает!
  • 25. Сервер приложений (A,P) – D • На одном слайде рассказать обо всем невозможно • Учитесь отличать мусорные запросы от настоящих • Заведите систему автоматической классификации трафика («нарисуйте сову») • Кстати, такая система есть у московской компании Highload Lab • Не используйте для блокирования мусорных запросов стоковый iptables • Используйте ipset или аналоги
  • 26. Сервер приложений (A,P) – E • Никогда не запускайте сервер приложений с правами пользователя root • Если в приложении существуют различные уровни доступа, потратьте время на создание внутреннего security framework и обязательно покройте его unit тестами • Интегрируйте в систему этот security framework таким образом, чтобы его было трудно обойти • Перед выполнением какой-то операции проверяйте роли и права пользователя
  • 27. Сервер приложений (A,P) – E • Защищайтесь от подбора пароля – CAPTCHA, блокирование IP после нескольких неудачных попыток • Требуйте от пользователя соответствия password policy • Умейте выделять неожиданное поведение пользователя – для этого трекайте его ожидаемое поведение (IP адреса, UA) • Введите двухфакторную аутентификацию (например, через SMS) • Но сделайте ее удобной
  • 28. Платформа (L) – S • Всю служебную коммуникацию с системой (деплоймент, обслуживание) проводите по шифрованным каналам • Для установления шифрованного соединения применяйте двухфакторную аутентификацию (IP-адрес + ключ, IP-адрес + пароль)
  • 29. Платформа (L) – T • Используйте AIDE, Tripwire или аналоги для отслеживания целостности компонентов платформы (конфигурационных файлов, etc) • Вы уже делаете бэкапы? • Создайте централизованный лог-сервер и ведите логи на него (syslog это позволяет) • Lennart Poettering знает, как правильно вести логи и скоро научит нас всех (лог-файлы будут криптографически подписаны)
  • 30. Платформа (L) – R • Про логи на отдельный сервер я уже говорил? • Раздайте пользователям ssh ключи с паролями и пусть ходят по ключам – ключ невозможно подобрать подбором • Не давайте никому заходить удаленно под пользователем root, пусть ходят под именными логинами и делают su или sudo • Регулярно проверяйте, что эти правила выполняются
  • 31. Платформа (L) – I • Установите и настройте Grsecurity, SELinux, RSBAC, AppArmor или Tomoyo – будет не очень легко, но вы справитесь, если захотите • Используя POLP и permissive mode указанных выше систем, раздайте системным пользователям нужное количество прав • Включите enforcing mode • Можно использовать POSIX ACLs для более точной раздачи прав
  • 32. Платформа (L) – D • Используйте систему сбора статистики и оповещения (NAGIOS, Icinga, Zabbix, etc) • Используйте возможности системы по ограничению количества потребляемых сервисами/системными пользователями ресурсов • Используйте виртуализацию и ограничивайте виртуальные машины в ресурсах • Не держите важные и второстепенные сервисы на одном физическом хосте
  • 33. Платформа (L) – E • Защищайтесь от подбора пароля (используйте демоны DenyHosts, fail2ban или аналоги) • Перенести сервисы на другие порты? • Думаете, атакующий их не узнает?  • Port knocking • Организация VPN для доступа к внутренним инфраструктурным сервисам • Обязательно применение security updates для используемых сервисов – регулярно находятся и устраняются remote vulnerabilities
  • 34. Все? • Сервер мы защитили • Но остался еще пользователь • А у пользователя есть браузер • Который тоже представляет из себя информационную систему
  • 35. Браузер – S • Сплошь и рядом – браузер не может отличить JavaScript-приложение, попавшее в него в результате срабатывания XSS-уязвимости на сайте от легальных действий пользователя • А ведь есть еще и CSRF-атаки
  • 36. XSS • <script>alert(“Hello, I’m a hacker!”)</script> • А разгадка одна – слишком высокий уровень доверия к введенным пользователем данным • Безжалостно режьте или экранируйте все, что браузер мог бы интерпретировать как JS • В библиотеке OWASP есть одна функция... • А в PHP их миллион • Общий принцип: доверие к пользовательским данным должно быть минимальным
  • 37. CSRF • Cross Site Request Forgery • Хороший пользователь залогинен на сайте a.com • Сайт a.com позволяет менять состояние через GET-запрос • Пользователь идет на сайт злоумышленника, где ему формируют GET- запрос, меняющий состояние на сайте a.com • Защититься легко – различайте GET и POST и ставьте one-time challenges в формы
  • 38. Браузер – T,R,D • Раньше браузер не хранил ничего, кроме cookies, теперь есть еще local file storage • Наверняка появится много новых интересных проблем, связанных с его безопасностью • Ваш браузер – это вы, на серверной стороне небезосновательно считают, что с той стороны вашего браузера вы, и никто другой • Особенно, если вы прошли аутентификацию • И сложно будет доказать обратное • DoS браузера? Нет, не слышал
  • 39. Браузер – I,E • Раскрытие информации происходит сплошь и рядом благодаря XSS уязвимостям • Как ни странно, в браузере возможно и повышение привилегий: http://habrahabr.ru/company/dsec/blog/14168 4/ • Подобные уязвимости находят и исправляют постоянно, всегда следите за апдейтами ваших браузеров
  • 40. Литература • Rainbow series (good luck!) • OWASP Guide • Security mailing lists используемых вами дистрибутива, сервера приложений, etc • http://security.stackexchange.com • Журнал «Хакер»
  • 42. Контакты • alexclear@gmail.com • http://alexclear.livejournal.com • http://github.com/alexclear • skype://demeliorator