Безопасность веб-приложений

Специалисты веб-студии www.friendly.com.ua поделились с редакцией нашего издания своими достижениями в этой области.

Облачные веб-приложения нужно разрабатывать надежными и защищенными. Задача эта непростая, но выполнимая. Если есть желание создать минимальный продукт, необходимо понимать, что разработка полезного и безопасного приложения займет несколько месяцев. В противном случае результатом станет не готовый сайт, а только его прототип.

Для рассмотрения предлагается список необходимых задач, решение которых обеспечит безопасность создаваемых проектов. Представитель веб-студии Френдли любезно поделился с нами подробностями, как происходит грамотное создание сайта в Киеве.

База данных

1.Если есть возможность, лучше использовать шифрование при хранении информации, которая идентифицирует пользователей, а также для хранения конфиденциальной информации, например, токены доступа, адреса электронной почты, платежные реквизиты – это даст возможность ограничивать запросы к базе данных до поиска при точном совпадении.

2.Если СУБД может поддерживать эконом-шифрование сохраненных данных, задействуйте его для защиты информации, которая находится на диске. Более того, нужно проверить, чтобы каждая резервная копия базы также была зашифрована.

3.Для доступа к информационной базе желательно использовать учетную запись каждого пользователя с минимумом привилегий. Не рекомендуется применять учетные записи суперпользователей и периодически нужно проверять систему на наличие учетных записей, которые не применяются или имеют довольно слабые пароли.

4.Для хранения, передачи данных учетных записей, токенов доступа к системе и другой секретной информации рекомендуется пользоваться хранилищем для ключей, которое рассчитано на такой сценарий работы. Не желательно хранить подобные данные, жестко задавая их в кодах приложения.

5.Система должна быть защищена от попыток взлома с помощью SQL-инъекции при использовании только SQL-запросов.

Особенности разработки

Чтобы осуществить правильную разработку сайтов в Киеве:

1.Необходимо обеспечить проверку элементов системы на уязвимость в начале каждого релиза. Имеется в виду все библиотеки, пакеты, рабочая среда. Идеально, если проверка будет автоматизирована процессом CI-CD.

2.Важно обезопасить компьютер разработчика и отнестись к этой задаче также внимательно, как и к вопросу о безопасности продакшн-сервера. Разработку нужно проводить защищенными, изолированными от потенциальной опасности внешней среды машинами.

При разработке безопасных сайтов следует также с особым вниманием подходить и к таким вопросам, как:

·аутентификация – пароли должны быть хэшироваными, использовать хорошо зарекомендованные элементы для создания входа в систему, применять систему многофакторной аутентификации;

·организовать защиту от DOS-атак;

·воспользоваться специальными средствами для защиты веб-трафика;

·каждый пользователь должен быть аутентифицирован и авторизирован до того, как он будет пользоваться API;

·необходимо проверять и преобразовывать все данные, которые вносятся пользователями;

·особое внимание нужно обратить на настройку облачной среды;

·при создании инфраструктуры лучше всего использовать Terraform;

·уделить особое внимание эксплуатации инфраструктуры, тестированию системы, обучению персонала и разработать план работы в нестандартной ситуации.

Каждый проект имеет свою уникальность, и его разработчики знают с какими именно угрозами нужно бороться, какую защиту нужно обеспечить чтобы в результате получился качественный «продукт».