SlideShare a Scribd company logo
1 of 22
Download to read offline
Безопасность
Drupal сайтов


 Фиделин Евгений, DrupalCamp Lviv 2012
Для чего взламывают сайты?
● Сервер:
  ○ Получение доступа к закрытой информации на сайте
    (логины, пароли, email, ...)
  ○ Использование ресурсов сервера в своих целях
    (spam-рассылка, баннеры, редиректы, вредоносный
    код, ...)


● Посетитель сайта:
  ○ Получение доступа к конфиденциальным данным
    посетителя (фишинг паролей, данных кредитных
    карт)
  ○ Использование ресурсов компьютера посетителя в
    своих целях (установка троянов, вирусов, ...)
Что нужно знать о безопасности?
● Обеспечение безопасности - это постоянный
  процесс, а не разовые меры.
● За безопасность отвечают все, кто имеет
  доступ к сайту.
● Нужно следить за безопасностью не только
  Drupal, а всего ПО на сервере.
● Поиск уязвимостей, их исправление и
  публикация - это хорошая практика.
ТОП-10 уязвимостей сайтов (owasp.org)
     Насколько Drupal сайты им подвержены
                                                    Drupal   Cервер Модуль
A1    SQL-injections                          7%                      X
A2    Cross-site scripting (XSS)              48%     X               X
A3    Broken Authentication and
                                              3%                      X
      Session Management
A4    Insecure Direct Object References       8%                      X
A5    Cross Site Request Forgery (CSRF)       10%                     X
A6    Security Misconfiguration               12%     X        X      X
A7    Failure to Restrict URL Access          8%                      X
A8    Unvalidated Redirects and Forwards       ~                      X
A9    Insecure Cryptographic Storage           ~                      X
A10 Insufficient Transport Layer Protection    ~      X        X      X
A1. SQL-injection
Небезопасный код:
db_query('SELECT nid FROM node WHERE user = '. $_GET['user']);

А что будет здесь?
http://www.example.com/page?user=1;DELETE FROM users;

В чем ошибка?
● Нет фильтрации аргументов
 ● Нет псевдонимов таблиц
Правильные варианты:
db_query('SELECT nid FROM {node} WHERE user = :user', array(':
user' => $_GET['user']);

db_select('node', 'n')->fields('n', array('nid')) ->condition
('uid', $_GET['user'])->execute();
A2. Cross-site scripting
     Самая распространенная уязвимость

Не позволяйте размещать опасный код.
1.   Валидируйте введенные данные
2.   Защититесь от SQL-injection
3.   Определяйте тип данных
4.   Фильтруйте вывод данных в зависимости от их типа
A2. Cross-site scripting
Фильтруем данные перед выводом
A2. Cross-site scripting
Устойчивая уязвимость. Шаг 1
A2. Cross-site scripting
Устойчивая уязвимость. Шаг 2
A2. Cross-site scripting
Устойчивая уязвимость. Шаг 3
A3. Broken Authentication and
 Session Management
Drupal по-умолчанию защищен:
● Авторизационные cookie не могут изменяться
  посетителями на стороне клиента
● Авторизационные cookie не содержат логина,
  пароля, а только ID сессии.
● Сессии и cookie пользователя уничтожаются
  и создаются заново при логине и логауте.
● Сookie имеют уникальные имена для каждого
  сайта и доступны только в пределах домена
A4. Insecure Direct Object References
 A7. Failure to Restrict URL Access
Drupal имеет мощную систему проверки доступа
к любой странице и даже элементу страницы:
● 'access callback' в hook_menu()
● user_access('administer nodes', $account);
● node_access('edit', $node, $account);
● $select->addtag('node_access');
● Form API
  ○ проверяет данные на валидность.
  ○ позволяет указать доступ для каждого поля
    $form['f']['#access'] = TRUE;
A5. Cross Site Request Forgery
  (CSRF)
Что будет, если разместить следующий код?
<img src="user/logout" />
<img src="node/10/delete" />


Как защититься?
● Для форм использовать Form API
   ○ Автоматически добавляет уникальный form_id и
      проверяет его валидность.
● Для ссылок и AJAX без Form API использовать токены
   ○ при запросе добавлять
      'query' => array('token' => drupal_get_token('my_id')
   ○ при обработке проверять
      if (drupal_valid_token($_GET['token'], 'my_id'))
A6. Security Misconfiguration
 Шаг 1. Настройки Drupal

● Установите сложный пароль для админов.
● Проверьте, кто имеет доступ к правам
  "administer ..."
● Правильно настройте форматы ввода
  доступные обычным пользователям.
● Не используйте формат ввода PHP!
● Проверьте, какие типы файлов могут
  загружать пользователи.
● Используйте CAPTCHA.
● Отключите вывод сообщений об ошибках.
● Удалите devel и все неиспользуемые модули.
A6. Security Misconfiguration
 Шаг 2. Дополнительные модули

● Security review - проверка основных настроек
  ○ http://drupal.org/project/security_review

● Hacked - проверка на изменение в исходных
  кодах модулей и тем
  ○ http://drupal.org/project/hacked

● Coder и Secure code review - проверка
  модулей на качество кода и основные
  уязвимости.
  ○ http://drupal.org/project/coder
  ○ http://drupal.org/project/secure_code_review
A6. Security Misconfiguration
 Шаг 3. Настройки сервера

● Проверьте права на запись файлов.
● Проверьте, что сервер не выдает список
  файлов в папке.
● Закройте доступ к phpMyAdmin.
● Закройте доступ к бекапам БД.
● Не используйте FTP - только SFTP или SSH.
● Не используйте root пользователя в MySQL.
● Убедитесь что ОС, PHP, сервер и др. имеют
  актуальные версии.
● Вы уверены в безопасности ваших соседей?
A8. Unvalidated Redirects and
  Forwards
Что будет, если разместить следующий код?
http://example.com/redirect?destination=evil.com


Как делать правильно?
● Drupal позволяет делать редиректы только на
  локальные URL через GET параметр
  destination.
● Для безопасного редиректа используйте
  drupal_goto() и $form['#redirect']
A9. Insecure Cryptographic Storage
Drupal имеет надежную систему хранения
секретных данных:
● Используется Portable PHP password для
  создания хешей паролей с солью
  user_hash_password().
● При установке Drupal создает уникальный
  приватный ключ, который нужно
  использовать при шифровании данных
  drupal_get_private_key().
● Механизм генерации паролей может быть
  расширен модулями.
A10. Insufficient Transport Layer
 Protection
Используйте HTTPS для защиты особо важных
данных:
● Drupal поддерживает работу через HTTPS
● Используйте модуль Secure pages для
  защиты определенных страниц.
  ○ http://drupal.org/project/securepages
● Используйте валидный SSL-сертификат
Безопасен ли Drupal?
 Да! Но люди совершают ошибки

● Налаженный процесс поиска и исправления
  уязвимостей, в котором участвуют:
  ○ Security team
  ○ Сертифицированные организации
  ○ Каждый разработчик (http://drupal.org/node/101494)

● Документация по обеспечению безопасности
  сайта:
  ○ http://drupal.org/security/secure-configuration

● Модули, повышающие безопасность:
  ○ http://drupalscout.com/knowledge-base/contributed-
    modules-securing-your-drupal-site
Что нужно делать разработчику
● Подпишитесь на рассылку Drupal security
  announcements
● Регулярно обновляйте модули и ядро Drupal
● Проводите код-ревью модулей на предмет
  уязвимостей:
  ○   http://drupal.org/security/writing-secure-code
  ○   http://drupalscout.com/knowledge-base
  ○   http://crackingdrupal.com/blog
  ○   https://www.owasp.org/images/0/0f/OWASP_T10_-
      _2010_rc1.pdf
Спасибо за внимание!
Есть вопросы?

   Не откладывайте решение проблем
с безопасностью - "потом" будет поздно.



             Фиделин Евгений
             eugene.fidelin@gmail.com
             Skype: eugene.fidelin
             facebook.com/eugene.fidelin

More Related Content

What's hot

Waf.js: как защищать веб-приложения с использованием JavaScript
Waf.js: как защищать веб-приложения с использованием JavaScriptWaf.js: как защищать веб-приложения с использованием JavaScript
Waf.js: как защищать веб-приложения с использованием JavaScriptPositive Hack Days
 
Как взламывают сети государственных учреждений
Как взламывают сети государственных учрежденийКак взламывают сети государственных учреждений
Как взламывают сети государственных учрежденийDmitry Evteev
 
Услуги PT для банков
Услуги PT для банковУслуги PT для банков
Услуги PT для банковDmitry Evteev
 
Введение в тему безопасности веб-приложений
Введение в тему безопасности веб-приложенийВведение в тему безопасности веб-приложений
Введение в тему безопасности веб-приложенийDmitry Evteev
 
Истории из жизни. Как взламывают сети крупных организаций.
Истории из жизни. Как взламывают сети крупных организаций.Истории из жизни. Как взламывают сети крупных организаций.
Истории из жизни. Как взламывают сети крупных организаций.Dmitry Evteev
 
Типовые проблемы безопасности банковских систем
Типовые проблемы безопасности банковских системТиповые проблемы безопасности банковских систем
Типовые проблемы безопасности банковских системDmitry Evteev
 
Атаки на web-приложения. Основы
Атаки на web-приложения. ОсновыАтаки на web-приложения. Основы
Атаки на web-приложения. ОсновыPositive Hack Days
 
Pt devteev-risspa
Pt devteev-risspaPt devteev-risspa
Pt devteev-risspayaevents
 
Безопасность сессий в веб-приложениях
Безопасность сессий в веб-приложенияхБезопасность сессий в веб-приложениях
Безопасность сессий в веб-приложенияхKateryna Ovechenko
 
Максим Кочкин (Wamba)
Максим Кочкин (Wamba)Максим Кочкин (Wamba)
Максим Кочкин (Wamba)Ontico
 
Анализ защищенности Web-приложений, выявление уязвимостей в реальных условиях
Анализ защищенности Web-приложений, выявление уязвимостей в реальных условияхАнализ защищенности Web-приложений, выявление уязвимостей в реальных условиях
Анализ защищенности Web-приложений, выявление уязвимостей в реальных условияхDmitry Evteev
 
Безопасность сессий в веб-приложениях: практическое применение
Безопасность сессий в веб-приложениях: практическое применениеБезопасность сессий в веб-приложениях: практическое применение
Безопасность сессий в веб-приложениях: практическое применениеSQALab
 
Типовые уязвимости систем ДБО
Типовые уязвимости систем ДБОТиповые уязвимости систем ДБО
Типовые уязвимости систем ДБОPositive Hack Days
 
Безопасность Joomla: мифы и реальность
Безопасность Joomla: мифы и реальностьБезопасность Joomla: мифы и реальность
Безопасность Joomla: мифы и реальностьrevisium
 
Почему хакеры выбирают WordPress. WordCamp 2017, Moscow.
Почему хакеры выбирают WordPress. WordCamp 2017, Moscow.Почему хакеры выбирают WordPress. WordCamp 2017, Moscow.
Почему хакеры выбирают WordPress. WordCamp 2017, Moscow.revisium
 
Демонстрация атаки на ДБО
Демонстрация атаки на ДБОДемонстрация атаки на ДБО
Демонстрация атаки на ДБОDmitry Evteev
 
Целевые атаки: прицелься первым
Целевые атаки: прицелься первымЦелевые атаки: прицелься первым
Целевые атаки: прицелься первымPositive Hack Days
 
Security testing
Security testingSecurity testing
Security testingMageCloud
 
разработка безопасного кода
разработка безопасного кодаразработка безопасного кода
разработка безопасного кодаAndrey Somsikov
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровYandex
 

What's hot (20)

Waf.js: как защищать веб-приложения с использованием JavaScript
Waf.js: как защищать веб-приложения с использованием JavaScriptWaf.js: как защищать веб-приложения с использованием JavaScript
Waf.js: как защищать веб-приложения с использованием JavaScript
 
Как взламывают сети государственных учреждений
Как взламывают сети государственных учрежденийКак взламывают сети государственных учреждений
Как взламывают сети государственных учреждений
 
Услуги PT для банков
Услуги PT для банковУслуги PT для банков
Услуги PT для банков
 
Введение в тему безопасности веб-приложений
Введение в тему безопасности веб-приложенийВведение в тему безопасности веб-приложений
Введение в тему безопасности веб-приложений
 
Истории из жизни. Как взламывают сети крупных организаций.
Истории из жизни. Как взламывают сети крупных организаций.Истории из жизни. Как взламывают сети крупных организаций.
Истории из жизни. Как взламывают сети крупных организаций.
 
Типовые проблемы безопасности банковских систем
Типовые проблемы безопасности банковских системТиповые проблемы безопасности банковских систем
Типовые проблемы безопасности банковских систем
 
Атаки на web-приложения. Основы
Атаки на web-приложения. ОсновыАтаки на web-приложения. Основы
Атаки на web-приложения. Основы
 
Pt devteev-risspa
Pt devteev-risspaPt devteev-risspa
Pt devteev-risspa
 
Безопасность сессий в веб-приложениях
Безопасность сессий в веб-приложенияхБезопасность сессий в веб-приложениях
Безопасность сессий в веб-приложениях
 
Максим Кочкин (Wamba)
Максим Кочкин (Wamba)Максим Кочкин (Wamba)
Максим Кочкин (Wamba)
 
Анализ защищенности Web-приложений, выявление уязвимостей в реальных условиях
Анализ защищенности Web-приложений, выявление уязвимостей в реальных условияхАнализ защищенности Web-приложений, выявление уязвимостей в реальных условиях
Анализ защищенности Web-приложений, выявление уязвимостей в реальных условиях
 
Безопасность сессий в веб-приложениях: практическое применение
Безопасность сессий в веб-приложениях: практическое применениеБезопасность сессий в веб-приложениях: практическое применение
Безопасность сессий в веб-приложениях: практическое применение
 
Типовые уязвимости систем ДБО
Типовые уязвимости систем ДБОТиповые уязвимости систем ДБО
Типовые уязвимости систем ДБО
 
Безопасность Joomla: мифы и реальность
Безопасность Joomla: мифы и реальностьБезопасность Joomla: мифы и реальность
Безопасность Joomla: мифы и реальность
 
Почему хакеры выбирают WordPress. WordCamp 2017, Moscow.
Почему хакеры выбирают WordPress. WordCamp 2017, Moscow.Почему хакеры выбирают WordPress. WordCamp 2017, Moscow.
Почему хакеры выбирают WordPress. WordCamp 2017, Moscow.
 
Демонстрация атаки на ДБО
Демонстрация атаки на ДБОДемонстрация атаки на ДБО
Демонстрация атаки на ДБО
 
Целевые атаки: прицелься первым
Целевые атаки: прицелься первымЦелевые атаки: прицелься первым
Целевые атаки: прицелься первым
 
Security testing
Security testingSecurity testing
Security testing
 
разработка безопасного кода
разработка безопасного кодаразработка безопасного кода
разработка безопасного кода
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
 

Similar to Е. Фиделин Безопасность Drupal сайтов

11 лекция, петр волков
11 лекция, петр волков11 лекция, петр волков
11 лекция, петр волковkarina krew
 
Архитектура защищенного периметра
Архитектура защищенного периметраАрхитектура защищенного периметра
Архитектура защищенного периметраCisco Russia
 
Web application security (RIT 2014, rus)
Web application security (RIT 2014, rus)Web application security (RIT 2014, rus)
Web application security (RIT 2014, rus)Maksim Kochkin
 
Взломать сайт на ASP.NET
Взломать сайт на ASP.NETВзломать сайт на ASP.NET
Взломать сайт на ASP.NETPositive Hack Days
 
Архитектура защищенного периметра
Архитектура защищенного периметраАрхитектура защищенного периметра
Архитектура защищенного периметраCisco Russia
 
Application Security - ответы на ежедневные вопросы / Сергей Белов (Mail.Ru G...
Application Security - ответы на ежедневные вопросы / Сергей Белов (Mail.Ru G...Application Security - ответы на ежедневные вопросы / Сергей Белов (Mail.Ru G...
Application Security - ответы на ежедневные вопросы / Сергей Белов (Mail.Ru G...Ontico
 
CloudsNN 2014. Андрей Бешков. Защита ваших данных в Office 365.
CloudsNN 2014. Андрей Бешков. Защита ваших данных в Office 365.CloudsNN 2014. Андрей Бешков. Защита ваших данных в Office 365.
CloudsNN 2014. Андрей Бешков. Защита ваших данных в Office 365.Clouds NN
 
Юрий Леонычев «Безопасность мобильных приложений для Android. Теория и практика»
Юрий Леонычев «Безопасность мобильных приложений для Android. Теория и практика»Юрий Леонычев «Безопасность мобильных приложений для Android. Теория и практика»
Юрий Леонычев «Безопасность мобильных приложений для Android. Теория и практика»Yandex
 
Опасная сериализация / Иван Юшкевич (Digital Security)
Опасная сериализация / Иван Юшкевич (Digital Security)Опасная сериализация / Иван Юшкевич (Digital Security)
Опасная сериализация / Иван Юшкевич (Digital Security)Ontico
 
[ONSEC ]XSS vs waf
[ONSEC ]XSS vs waf[ONSEC ]XSS vs waf
[ONSEC ]XSS vs wafd0znp
 
Blind Sql Injections. Хороши ли ваши тесты?
Blind Sql Injections. Хороши ли ваши тесты?Blind Sql Injections. Хороши ли ваши тесты?
Blind Sql Injections. Хороши ли ваши тесты?Zestranec
 
Борьба с вредоносным кодом: от базовых мер к целостной стратегии
Борьба с вредоносным кодом: от базовых мер к целостной стратегииБорьба с вредоносным кодом: от базовых мер к целостной стратегии
Борьба с вредоносным кодом: от базовых мер к целостной стратегииAleksey Lukatskiy
 
Alexei Sintsov - "Between error and vulerability - one step"
Alexei Sintsov - "Between error and vulerability - one step"Alexei Sintsov - "Between error and vulerability - one step"
Alexei Sintsov - "Between error and vulerability - one step"Andrew Mayorov
 
Построение защищенного Интернет-периметра
Построение защищенного Интернет-периметраПостроение защищенного Интернет-периметра
Построение защищенного Интернет-периметраCisco Russia
 
17 способов проникновения во внутреннюю сеть компании
17 способов проникновения во внутреннюю сеть компании17 способов проникновения во внутреннюю сеть компании
17 способов проникновения во внутреннюю сеть компанииAleksey Lukatskiy
 
безопасность веб приложений сегодня. дмитрий евтеев. зал 4
безопасность веб приложений сегодня. дмитрий евтеев. зал 4безопасность веб приложений сегодня. дмитрий евтеев. зал 4
безопасность веб приложений сегодня. дмитрий евтеев. зал 4rit2011
 
Безопасность веб-приложений сегодня
Безопасность веб-приложений сегодняБезопасность веб-приложений сегодня
Безопасность веб-приложений сегодняDmitry Evteev
 
тестирование защищенности веб приложений
тестирование защищенности веб приложенийтестирование защищенности веб приложений
тестирование защищенности веб приложенийZestranec
 
Тестирование защищенности веб-приложений
Тестирование защищенности веб-приложенийТестирование защищенности веб-приложений
Тестирование защищенности веб-приложенийSQALab
 

Similar to Е. Фиделин Безопасность Drupal сайтов (20)

11 лекция, петр волков
11 лекция, петр волков11 лекция, петр волков
11 лекция, петр волков
 
Архитектура защищенного периметра
Архитектура защищенного периметраАрхитектура защищенного периметра
Архитектура защищенного периметра
 
Web application security (RIT 2014, rus)
Web application security (RIT 2014, rus)Web application security (RIT 2014, rus)
Web application security (RIT 2014, rus)
 
Взломать сайт на ASP.NET
Взломать сайт на ASP.NETВзломать сайт на ASP.NET
Взломать сайт на ASP.NET
 
Архитектура защищенного периметра
Архитектура защищенного периметраАрхитектура защищенного периметра
Архитектура защищенного периметра
 
Application Security - ответы на ежедневные вопросы / Сергей Белов (Mail.Ru G...
Application Security - ответы на ежедневные вопросы / Сергей Белов (Mail.Ru G...Application Security - ответы на ежедневные вопросы / Сергей Белов (Mail.Ru G...
Application Security - ответы на ежедневные вопросы / Сергей Белов (Mail.Ru G...
 
CloudsNN 2014. Андрей Бешков. Защита ваших данных в Office 365.
CloudsNN 2014. Андрей Бешков. Защита ваших данных в Office 365.CloudsNN 2014. Андрей Бешков. Защита ваших данных в Office 365.
CloudsNN 2014. Андрей Бешков. Защита ваших данных в Office 365.
 
Юрий Леонычев «Безопасность мобильных приложений для Android. Теория и практика»
Юрий Леонычев «Безопасность мобильных приложений для Android. Теория и практика»Юрий Леонычев «Безопасность мобильных приложений для Android. Теория и практика»
Юрий Леонычев «Безопасность мобильных приложений для Android. Теория и практика»
 
Securing Rails Applications
Securing Rails ApplicationsSecuring Rails Applications
Securing Rails Applications
 
Опасная сериализация / Иван Юшкевич (Digital Security)
Опасная сериализация / Иван Юшкевич (Digital Security)Опасная сериализация / Иван Юшкевич (Digital Security)
Опасная сериализация / Иван Юшкевич (Digital Security)
 
[ONSEC ]XSS vs waf
[ONSEC ]XSS vs waf[ONSEC ]XSS vs waf
[ONSEC ]XSS vs waf
 
Blind Sql Injections. Хороши ли ваши тесты?
Blind Sql Injections. Хороши ли ваши тесты?Blind Sql Injections. Хороши ли ваши тесты?
Blind Sql Injections. Хороши ли ваши тесты?
 
Борьба с вредоносным кодом: от базовых мер к целостной стратегии
Борьба с вредоносным кодом: от базовых мер к целостной стратегииБорьба с вредоносным кодом: от базовых мер к целостной стратегии
Борьба с вредоносным кодом: от базовых мер к целостной стратегии
 
Alexei Sintsov - "Between error and vulerability - one step"
Alexei Sintsov - "Between error and vulerability - one step"Alexei Sintsov - "Between error and vulerability - one step"
Alexei Sintsov - "Between error and vulerability - one step"
 
Построение защищенного Интернет-периметра
Построение защищенного Интернет-периметраПостроение защищенного Интернет-периметра
Построение защищенного Интернет-периметра
 
17 способов проникновения во внутреннюю сеть компании
17 способов проникновения во внутреннюю сеть компании17 способов проникновения во внутреннюю сеть компании
17 способов проникновения во внутреннюю сеть компании
 
безопасность веб приложений сегодня. дмитрий евтеев. зал 4
безопасность веб приложений сегодня. дмитрий евтеев. зал 4безопасность веб приложений сегодня. дмитрий евтеев. зал 4
безопасность веб приложений сегодня. дмитрий евтеев. зал 4
 
Безопасность веб-приложений сегодня
Безопасность веб-приложений сегодняБезопасность веб-приложений сегодня
Безопасность веб-приложений сегодня
 
тестирование защищенности веб приложений
тестирование защищенности веб приложенийтестирование защищенности веб приложений
тестирование защищенности веб приложений
 
Тестирование защищенности веб-приложений
Тестирование защищенности веб-приложенийТестирование защищенности веб-приложений
Тестирование защищенности веб-приложений
 

More from Albina Tiupa

Happy ever afters with ci workflow
Happy ever afters with ci workflowHappy ever afters with ci workflow
Happy ever afters with ci workflowAlbina Tiupa
 
Иван Фесюк Работа с медиа
Иван Фесюк Работа с медиаИван Фесюк Работа с медиа
Иван Фесюк Работа с медиаAlbina Tiupa
 
Виктор Левандовский Управление проектами по разработке на Drupal
Виктор Левандовский Управление проектами по разработке на DrupalВиктор Левандовский Управление проектами по разработке на Drupal
Виктор Левандовский Управление проектами по разработке на DrupalAlbina Tiupa
 
Артур Богданов Как быть успешными с клиентами решая их проблемы
Артур Богданов Как быть успешными с клиентами решая их проблемыАртур Богданов Как быть успешными с клиентами решая их проблемы
Артур Богданов Как быть успешными с клиентами решая их проблемыAlbina Tiupa
 
Андрей Юн Удобная разработка Drupal проекта. Полезные модули
Андрей Юн Удобная разработка Drupal проекта. Полезные модулиАндрей Юн Удобная разработка Drupal проекта. Полезные модули
Андрей Юн Удобная разработка Drupal проекта. Полезные модулиAlbina Tiupa
 
Андрей Тюпа Оптимизация верстки Sass + Compass framework
Андрей Тюпа Оптимизация верстки Sass + Compass frameworkАндрей Тюпа Оптимизация верстки Sass + Compass framework
Андрей Тюпа Оптимизация верстки Sass + Compass frameworkAlbina Tiupa
 
Андрей Подлубный Seo и вёрстка
Андрей Подлубный Seo и вёрсткаАндрей Подлубный Seo и вёрстка
Андрей Подлубный Seo и вёрсткаAlbina Tiupa
 
Александр Бондаренко Хорошая типографика как залог успешности вашего сайта
Александр Бондаренко Хорошая типографика как залог успешности вашего сайтаАлександр Бондаренко Хорошая типографика как залог успешности вашего сайта
Александр Бондаренко Хорошая типографика как залог успешности вашего сайтаAlbina Tiupa
 
М. Боднарчук Современное функциональное тестирование с Codeception
М. Боднарчук Современное функциональное тестирование с CodeceptionМ. Боднарчук Современное функциональное тестирование с Codeception
М. Боднарчук Современное функциональное тестирование с CodeceptionAlbina Tiupa
 
А. Рябцев Drupal vs Wordpress на реальных примерах
А. Рябцев Drupal vs Wordpress на реальных примерахА. Рябцев Drupal vs Wordpress на реальных примерах
А. Рябцев Drupal vs Wordpress на реальных примерахAlbina Tiupa
 
В. Мельник Практические примеры использования модуль feeds
В. Мельник Практические примеры использования модуль feedsВ. Мельник Практические примеры использования модуль feeds
В. Мельник Практические примеры использования модуль feedsAlbina Tiupa
 
А. Горобец Расширяем media module. эффективный content management
А. Горобец Расширяем media module. эффективный content managementА. Горобец Расширяем media module. эффективный content management
А. Горобец Расширяем media module. эффективный content managementAlbina Tiupa
 
С. Савва Основы Commerce и примеры
С. Савва Основы Commerce и примерыС. Савва Основы Commerce и примеры
С. Савва Основы Commerce и примерыAlbina Tiupa
 
Владимир Мельник Практические примеры используя модуль feeds
Владимир Мельник Практические примеры используя модуль feedsВладимир Мельник Практические примеры используя модуль feeds
Владимир Мельник Практические примеры используя модуль feedsAlbina Tiupa
 
Михаил Боднарчук Современное функциональное тестирование с Codeception
Михаил Боднарчук Современное функциональное тестирование с CodeceptionМихаил Боднарчук Современное функциональное тестирование с Codeception
Михаил Боднарчук Современное функциональное тестирование с CodeceptionAlbina Tiupa
 

More from Albina Tiupa (15)

Happy ever afters with ci workflow
Happy ever afters with ci workflowHappy ever afters with ci workflow
Happy ever afters with ci workflow
 
Иван Фесюк Работа с медиа
Иван Фесюк Работа с медиаИван Фесюк Работа с медиа
Иван Фесюк Работа с медиа
 
Виктор Левандовский Управление проектами по разработке на Drupal
Виктор Левандовский Управление проектами по разработке на DrupalВиктор Левандовский Управление проектами по разработке на Drupal
Виктор Левандовский Управление проектами по разработке на Drupal
 
Артур Богданов Как быть успешными с клиентами решая их проблемы
Артур Богданов Как быть успешными с клиентами решая их проблемыАртур Богданов Как быть успешными с клиентами решая их проблемы
Артур Богданов Как быть успешными с клиентами решая их проблемы
 
Андрей Юн Удобная разработка Drupal проекта. Полезные модули
Андрей Юн Удобная разработка Drupal проекта. Полезные модулиАндрей Юн Удобная разработка Drupal проекта. Полезные модули
Андрей Юн Удобная разработка Drupal проекта. Полезные модули
 
Андрей Тюпа Оптимизация верстки Sass + Compass framework
Андрей Тюпа Оптимизация верстки Sass + Compass frameworkАндрей Тюпа Оптимизация верстки Sass + Compass framework
Андрей Тюпа Оптимизация верстки Sass + Compass framework
 
Андрей Подлубный Seo и вёрстка
Андрей Подлубный Seo и вёрсткаАндрей Подлубный Seo и вёрстка
Андрей Подлубный Seo и вёрстка
 
Александр Бондаренко Хорошая типографика как залог успешности вашего сайта
Александр Бондаренко Хорошая типографика как залог успешности вашего сайтаАлександр Бондаренко Хорошая типографика как залог успешности вашего сайта
Александр Бондаренко Хорошая типографика как залог успешности вашего сайта
 
М. Боднарчук Современное функциональное тестирование с Codeception
М. Боднарчук Современное функциональное тестирование с CodeceptionМ. Боднарчук Современное функциональное тестирование с Codeception
М. Боднарчук Современное функциональное тестирование с Codeception
 
А. Рябцев Drupal vs Wordpress на реальных примерах
А. Рябцев Drupal vs Wordpress на реальных примерахА. Рябцев Drupal vs Wordpress на реальных примерах
А. Рябцев Drupal vs Wordpress на реальных примерах
 
В. Мельник Практические примеры использования модуль feeds
В. Мельник Практические примеры использования модуль feedsВ. Мельник Практические примеры использования модуль feeds
В. Мельник Практические примеры использования модуль feeds
 
А. Горобец Расширяем media module. эффективный content management
А. Горобец Расширяем media module. эффективный content managementА. Горобец Расширяем media module. эффективный content management
А. Горобец Расширяем media module. эффективный content management
 
С. Савва Основы Commerce и примеры
С. Савва Основы Commerce и примерыС. Савва Основы Commerce и примеры
С. Савва Основы Commerce и примеры
 
Владимир Мельник Практические примеры используя модуль feeds
Владимир Мельник Практические примеры используя модуль feedsВладимир Мельник Практические примеры используя модуль feeds
Владимир Мельник Практические примеры используя модуль feeds
 
Михаил Боднарчук Современное функциональное тестирование с Codeception
Михаил Боднарчук Современное функциональное тестирование с CodeceptionМихаил Боднарчук Современное функциональное тестирование с Codeception
Михаил Боднарчук Современное функциональное тестирование с Codeception
 

Е. Фиделин Безопасность Drupal сайтов

  • 1. Безопасность Drupal сайтов Фиделин Евгений, DrupalCamp Lviv 2012
  • 2. Для чего взламывают сайты? ● Сервер: ○ Получение доступа к закрытой информации на сайте (логины, пароли, email, ...) ○ Использование ресурсов сервера в своих целях (spam-рассылка, баннеры, редиректы, вредоносный код, ...) ● Посетитель сайта: ○ Получение доступа к конфиденциальным данным посетителя (фишинг паролей, данных кредитных карт) ○ Использование ресурсов компьютера посетителя в своих целях (установка троянов, вирусов, ...)
  • 3. Что нужно знать о безопасности? ● Обеспечение безопасности - это постоянный процесс, а не разовые меры. ● За безопасность отвечают все, кто имеет доступ к сайту. ● Нужно следить за безопасностью не только Drupal, а всего ПО на сервере. ● Поиск уязвимостей, их исправление и публикация - это хорошая практика.
  • 4. ТОП-10 уязвимостей сайтов (owasp.org) Насколько Drupal сайты им подвержены Drupal Cервер Модуль A1 SQL-injections 7% X A2 Cross-site scripting (XSS) 48% X X A3 Broken Authentication and 3% X Session Management A4 Insecure Direct Object References 8% X A5 Cross Site Request Forgery (CSRF) 10% X A6 Security Misconfiguration 12% X X X A7 Failure to Restrict URL Access 8% X A8 Unvalidated Redirects and Forwards ~ X A9 Insecure Cryptographic Storage ~ X A10 Insufficient Transport Layer Protection ~ X X X
  • 5. A1. SQL-injection Небезопасный код: db_query('SELECT nid FROM node WHERE user = '. $_GET['user']); А что будет здесь? http://www.example.com/page?user=1;DELETE FROM users; В чем ошибка? ● Нет фильтрации аргументов ● Нет псевдонимов таблиц Правильные варианты: db_query('SELECT nid FROM {node} WHERE user = :user', array(': user' => $_GET['user']); db_select('node', 'n')->fields('n', array('nid')) ->condition ('uid', $_GET['user'])->execute();
  • 6. A2. Cross-site scripting Самая распространенная уязвимость Не позволяйте размещать опасный код. 1. Валидируйте введенные данные 2. Защититесь от SQL-injection 3. Определяйте тип данных 4. Фильтруйте вывод данных в зависимости от их типа
  • 7. A2. Cross-site scripting Фильтруем данные перед выводом
  • 8. A2. Cross-site scripting Устойчивая уязвимость. Шаг 1
  • 9. A2. Cross-site scripting Устойчивая уязвимость. Шаг 2
  • 10. A2. Cross-site scripting Устойчивая уязвимость. Шаг 3
  • 11. A3. Broken Authentication and Session Management Drupal по-умолчанию защищен: ● Авторизационные cookie не могут изменяться посетителями на стороне клиента ● Авторизационные cookie не содержат логина, пароля, а только ID сессии. ● Сессии и cookie пользователя уничтожаются и создаются заново при логине и логауте. ● Сookie имеют уникальные имена для каждого сайта и доступны только в пределах домена
  • 12. A4. Insecure Direct Object References A7. Failure to Restrict URL Access Drupal имеет мощную систему проверки доступа к любой странице и даже элементу страницы: ● 'access callback' в hook_menu() ● user_access('administer nodes', $account); ● node_access('edit', $node, $account); ● $select->addtag('node_access'); ● Form API ○ проверяет данные на валидность. ○ позволяет указать доступ для каждого поля $form['f']['#access'] = TRUE;
  • 13. A5. Cross Site Request Forgery (CSRF) Что будет, если разместить следующий код? <img src="user/logout" /> <img src="node/10/delete" /> Как защититься? ● Для форм использовать Form API ○ Автоматически добавляет уникальный form_id и проверяет его валидность. ● Для ссылок и AJAX без Form API использовать токены ○ при запросе добавлять 'query' => array('token' => drupal_get_token('my_id') ○ при обработке проверять if (drupal_valid_token($_GET['token'], 'my_id'))
  • 14. A6. Security Misconfiguration Шаг 1. Настройки Drupal ● Установите сложный пароль для админов. ● Проверьте, кто имеет доступ к правам "administer ..." ● Правильно настройте форматы ввода доступные обычным пользователям. ● Не используйте формат ввода PHP! ● Проверьте, какие типы файлов могут загружать пользователи. ● Используйте CAPTCHA. ● Отключите вывод сообщений об ошибках. ● Удалите devel и все неиспользуемые модули.
  • 15. A6. Security Misconfiguration Шаг 2. Дополнительные модули ● Security review - проверка основных настроек ○ http://drupal.org/project/security_review ● Hacked - проверка на изменение в исходных кодах модулей и тем ○ http://drupal.org/project/hacked ● Coder и Secure code review - проверка модулей на качество кода и основные уязвимости. ○ http://drupal.org/project/coder ○ http://drupal.org/project/secure_code_review
  • 16. A6. Security Misconfiguration Шаг 3. Настройки сервера ● Проверьте права на запись файлов. ● Проверьте, что сервер не выдает список файлов в папке. ● Закройте доступ к phpMyAdmin. ● Закройте доступ к бекапам БД. ● Не используйте FTP - только SFTP или SSH. ● Не используйте root пользователя в MySQL. ● Убедитесь что ОС, PHP, сервер и др. имеют актуальные версии. ● Вы уверены в безопасности ваших соседей?
  • 17. A8. Unvalidated Redirects and Forwards Что будет, если разместить следующий код? http://example.com/redirect?destination=evil.com Как делать правильно? ● Drupal позволяет делать редиректы только на локальные URL через GET параметр destination. ● Для безопасного редиректа используйте drupal_goto() и $form['#redirect']
  • 18. A9. Insecure Cryptographic Storage Drupal имеет надежную систему хранения секретных данных: ● Используется Portable PHP password для создания хешей паролей с солью user_hash_password(). ● При установке Drupal создает уникальный приватный ключ, который нужно использовать при шифровании данных drupal_get_private_key(). ● Механизм генерации паролей может быть расширен модулями.
  • 19. A10. Insufficient Transport Layer Protection Используйте HTTPS для защиты особо важных данных: ● Drupal поддерживает работу через HTTPS ● Используйте модуль Secure pages для защиты определенных страниц. ○ http://drupal.org/project/securepages ● Используйте валидный SSL-сертификат
  • 20. Безопасен ли Drupal? Да! Но люди совершают ошибки ● Налаженный процесс поиска и исправления уязвимостей, в котором участвуют: ○ Security team ○ Сертифицированные организации ○ Каждый разработчик (http://drupal.org/node/101494) ● Документация по обеспечению безопасности сайта: ○ http://drupal.org/security/secure-configuration ● Модули, повышающие безопасность: ○ http://drupalscout.com/knowledge-base/contributed- modules-securing-your-drupal-site
  • 21. Что нужно делать разработчику ● Подпишитесь на рассылку Drupal security announcements ● Регулярно обновляйте модули и ядро Drupal ● Проводите код-ревью модулей на предмет уязвимостей: ○ http://drupal.org/security/writing-secure-code ○ http://drupalscout.com/knowledge-base ○ http://crackingdrupal.com/blog ○ https://www.owasp.org/images/0/0f/OWASP_T10_- _2010_rc1.pdf
  • 22. Спасибо за внимание! Есть вопросы? Не откладывайте решение проблем с безопасностью - "потом" будет поздно. Фиделин Евгений eugene.fidelin@gmail.com Skype: eugene.fidelin facebook.com/eugene.fidelin