Как защитить данные пользователей web- и mobile -сервисов

Июль 2019
~3 мин
Все публикации
Дмитрий Никульчев
Источник: itsec.ru

Безопасное программирование в DD Planet построено на нескольких принципах. Первый из них — это надежность. Работоспособность продукта должна быть предсказуема, корректна и безотказна. Даже в случае, если исходные данные  введены некорректно (случайно или намеренно в рамках атаки на продукт).

Второй — безопасность. Возможность защиты от внешних угроз, атак и сохранение работоспособности после их отражения и устранения. 

Третий — конфиденциальность. Обеспечение безопасной и корректной работы с персональными данными. Это критически важно при разработке корпоративных и пользовательских приложений. 

Например, сервис Вместе.ру, разработкой и поддержкой которого занимается DD Planet, представляет собой приватную социальную сеть для соседей и содержит множество персональных данных. Профиль пользователя подтверждается с помощью Госуслуг, а принадлежность к определенному адресу (соседство) — выпиской ЕГРН из Росреестра. Это накладывает на разработчика серьезные обязательства, связанные с защитой личной информации. 

Хранение и обработка пользовательских данных 

Все персональные данные мы храним в ИСПДн (Информационной системе персональных данных). Они содержатся в изолированной виртуальной сети с защищенной ИТ-инфраструктурой. В виртуальную сеть интегрированы средства обнаружения вторжений, сервер анализа защищенности и поиска уязвимостей, а также сервер резервного копирования.

Для выявления уязвимостей применяем “ручной подход” и опираемся на экспертный анализ. Данный принцип не подразумевает использование каких-либо автоматизированных средств: исследование проводит опытный специалист, а при выявлении уязвимостей он ориентируется на собственные знания. Понятно, что данный прием влечет большие временные затраты и предполагает наличие в компании специалистов высокой квалификации. Однако он считается самым эффективным с точки зрения точности и полноты охвата данных при проверке.

Severity в борьбе за идеальный продукт

В клиентской разработке важно делать релизы вовремя, при этом приложение должно быть без багов и гарантировать пользователям безопасность. Следуя этому принципу, во время тестирования продуктов мы используем принцип оценивания задач по приоритету — Severity. То есть  ранжируем все задачи по устранению багов в зависимости от степени негативного влияния на продукт дефекта.

Приоритетность в устранении багов в DD Planet следующая:

  1. В первую очередь мы выявляем и устраняем блокеры или ошибки, при которых у пользователя нет возможности выполнить целевое действие. Например, посетитель не может зарегистрироваться на сайте или в приложении; осуществить вход в аккаунт; получить доступ к целевым данным или к разделам приложения. 
  2. Далее мы отслеживаем и устраняем критические баги — проблемы безопасности, зависания системы, неправильно работающий бизнес-процесс, периодические падения приложения.
  3. Затем анализируем проблемы medium-уровня — находим ошибки, которые появляются лишь в отдельных специфических ситуациях.
  4. Завершающим этапом вносим минорные правки — избавляемся от мелких багов, отрабатываем замечания по интерфейсу и так далее.

Такая последовательность помогает нам быстро избавляться от багов, концентрируясь на ключевых для пользователя аспектах. 

Релиз продукта происходит в несколько этапов. Сперва он публикуется на тестовом окружении для выявления багов. Затем идёт багфиксинг приоритетов c уровнем Severity 1 и 2. После этого мы делаем релиз на продакшн. В течении некоторого времени после релиза часть команды занимается устранением багов с приоритетностью 3 и 4. Через несколько дней происходит еще одно обновление в prod после устранения оставшихся проблем.

Чтобы обеспечить максимальную безопасность продукта:

  • Используйте параметризованные запросы к Базе Данных.
  • Избавляйтесь от конструирования запросов внутри приложения, чтобы избежать sql-инъекций. 
  • Подключайтесь к Базе Данных лишь под специальной заведенной учетной записью с минимально необходимым набором прав. 
  • Регулярно ведите журналы безопасности.

Не доверяйте пользовательскому вводу: любые данные от клиента (пользователя) должны проверяться на сервере. Это позволит предотвратить прохождение скриптов или злонамеренных шестнадцатеричных кодов. Пользовательские данные часто передаются в качестве параметров для вызова другого кода на сервере и, если их не проверить, могут серьезно нарушить безопасность системы. Вот почему так важно строго проверять все входные данные на корректность. 

Найдем решение вашей задачи

Заполнить бриф
Форматы: jpg, png, xsl, PDF, doc. Размер до 10 МБ
Нажимая кнопку «Отправить», Вы принимаете условия обеспечения конфиденциальности персональных данных.
Отправить