Подавляющее большинство компаний ведут деятельность в интернете и пользуются web-приложениями и их мобильными аналогами в повседневной жизни, будь то социальные сети, мессенджеры, файлохранилища, или системы управления рабочими проектами.
Сегодня поговорим о том, как работают веб-приложения, кто обеспечивает их безопасность, а также где можно обучиться безопасности веб-приложений.
Что такое веб-приложения
По сути web-приложение представляет собой софт, расположенный на стороннем сервере или кластере серверов. Отображается он в вашем браузере на рабочем столе, а все операции происходят на стороне разработчика. Здесь обрабатываются запросы и происходит управление данными, а вы видите только конечный результат.
Ключевое отличие от десктопного ПО в том, что веб-приложения не нужно устанавливать на компьютер. Типичный пример для сравнения: текстовый редактор MS Word и почти аналогичный редактор Google Docs. В первом вы работаете у себя на компьютере или ноутбуке, во втором — все операции происходят на облаке компании Гугл посредством браузера, данные хранятся там же с привязкой к вашему аккаунту
Архитектура веб-приложений
Буквально все веб-приложения построены по одному и тому же принципу, в котором есть:
- Клиентская сторона (Frontend) — все, что видит пользователь на своем экране и с чем может взаимодействовать;
- Серверная сторона (Backend) — программы, отвечающие за серверную логику, обработку запросов от клиента и передачу на серверные приложения, маршрутизацию запросов, взаимодействие с базами данных и т.д.;
- Базы данных и системы управления ими (SQL) — обеспечивают хранение информации и выдачу по запросу от клиента;
- API (Application Programming Interface) — программный интерфейс приложения, позволяющий различным приложениям обмениваться данными между собой.
В совокупности все это работает следующим образом:
- Пользователь выполняет целевое действие на веб-странице, например, нажимает кнопку;
- Браузер отправляет HTTP-запрос к серверу, который включает метод запроса, заголовки и какие-либо данные;
- Запрос обрабатывается на сервере с помощью специального приложения. Оно формирует HTTP-ответ, который может включать HTML-страницу, JSON-данные или другие ресурсы, и отправляет его обратно клиенту;
- Данные отображаются на клиентской стороне после рендеринга страницы. Если ответ содержит дополнительные данные, они могут использоваться для обновления части страницы без перезагрузки (технология AJAX).
Также в веб-приложениях есть функционал для обеспечения безопасности и контроля доступа к разным функциям — это аутентификация и авторизация. Такой принцип принят, чтобы сохранить в неприкосновенности личную информацию пользователя или какие-либо чувствительные данные. Некоторые из них могут храниться и на стороне клиента, например, файлы Cookies или сессии.
Что входит в безопасность веб-приложений
Разработчики любого веб-приложения, особенно если речь идет о социальных сетях и мессенджерах, обязаны позаботиться о сохранности данных пользователей и предотвратить несанкционированный доступ к ним.
Для этого разработан целый ряд мероприятий и защитных систем:
1. Аутентификация и авторизация
Здесь имеются в виду проверка подлинности пользователя с помощью логина, пароля и двухфакторной аутентификации (например, через СМС-пароль). Авторизация же определяет права доступа пользователя к тем или иным ресурсам (админ, пользователь) и тому, что он может делать в системе
2. Шифрование данных
Система TLS/SSL используется, чтобы защитить данные от перехвата, когда они передаются между клиентом и сервером.
Также есть шифрование данных в базах данных и других хранилищах — это помогает закрыть их от несанкционированного доступа.
3. Защита от атак
Под этим понимается совокупность методик, которые помогают предотвратить такие методы хакеров, как:
- SQL-инъекции. Внедрение вредоносного кода в SQL-запросы. Защита включает использование подготовленных выражений (prepared statements) и ORM (object-relational mapping).
- XSS (Cross-Site Scripting). Внедрение вредоносного скрипта на веб-страницу. Защита включает правильную экранизацию и очистку пользовательского ввода.
- CSRF (Cross-Site Request Forgery). Атака, заставляющая пользователя выполнить нежелательное действие на сайте, на котором он аутентифицирован. Защита включает использование CSRF-токенов.
4. Управление сессиями
Сессии — это временной период, который пользователь проводит на сайте или в приложении. Если он долгое время бездействует, то ему приходится заново заходить в своей аккаунт. Управление сессиями также заключается в использовании уникальных идентификаторов и противодействие краже сессий.
5. Логи и мониторинг
На серверной стороне также фиксируются все действия пользователей и системные события. Они представлены в виде логов событий, которые помогают отслеживать и пресекать подозрительную активность. Мониторинг включает системы обнаружения вторжений (IDS), которые непрерывно отслеживают попытки проникновения и кражи данных.
Специалисты, которые отвечают за безопасность веб-приложений
1. Веб-разработчик (программист)
Очевидно, что безопасностью веб-приложений занимаются в первую очередь программисты — ведь чем меньше программных дыр и уязвимостей в коде, тем меньше шансов взломать софт.
Поэтому любой разработчик, будь то фронтенд или бекенд, должен следить за чистотой кода, а также использовать статический и динамический анализ для поиска уязвимостей. Есть также определенные международные и национальные стандарты разработки, которые нужно знать разработчику:
- OWASP (Open Web Application Security Project);
- ISO/IEC (International Organization for Standardization / International Electrotechnical Commission);
- PCI DSS (Payment Card Industry Data Security Standard);
- ГОСТ Р 56939-2016;
- CSA (Cloud Security Alliance) и другие
2. Системный администратор
Сисадмины отвечают за управление и настройку конфигураций серверов, а также работоспособность сетевой инфраструктуры. Их задача — сохранять данные, которые там находятся, в неприкосновенности.
Для этого от системных администраторов требуется регулярно обновлять параметры безопасности, делать бэкапы, настраивать шифрование и политику безопасности на уровне сервера.
3. Инженер службы ИБ
У этого специалиста и его команды задача посложнее, чем у сисадмина. Они регулярно проводят аудит систем безопасности и организуют своего рода киберучения — тесты на проникновение и Red Teaming. В рамках этих учений выявляются возможные уязвимости в системе, которые впоследствии предстоит устранить.
Также инженер ИБ отвечает за обучение линейных сотрудников правилам безопасной работы с данными, разрабатывает служебные инструкции и мануалы, проверяет соблюдение установленных правил.
4. Пентестер
Отдельная категория специалистов ИБ — это пентестеры (pentestists), или этичные хакеры. Их работа как раз заключается в том, чтобы искать уязвимости и проникать в системы безопасности.
Заниматься пентестом они могут и в качестве сторонних аудиторов, и в составе Red Team, и работая в штате компании под руководством начальника службы ИБ.
Основная же цель пентестера — найти способ проникнуть в инфраструктуру или ее подсистемы, а затем составить отчет для специалистов ИБ и детально описать путь, по которому это удалось сделать.
4. DevSecOps-инженер
Этот специалист отвечает за внедрение ИБ-инструментов в жизненный цикл разработки веб-приложений и тестирует их на каждом этапе разработки и развертывания.
Также DevSecOps вместе со своей командой занимается непрерывным мониторингом и тестированием приложения на безопасность. Нередко к этому привлекаются и сторонние пентестеры, которые не участвуют непосредственно в разработке.
Какие есть курсы по безопасности веб-приложений
В первую очередь обучению безопасности веб-приложений должны уделять внимание разработчики софта и DevOps-специалисты. Сюда входит:
- Знание стандартов;
- Знание методологии разработки (SAST и DAST, DevSecOps, Threat Modeling);
- Владение валидацией и экранированием ввода, шифрованием данных и другими практиками;
- Знание, как устроен аудит безопасности и управление версиями.
Российские онлайн-курсы по безопасной разработке (примеры)
- Яндекс.Практикум. Веб-разработчик;
- InfoSecurity. Курсы по безопасной разработке для компаний;
- Acamedy IT. Безопасное программирование (Secure Coding);
- Академия информационных систем. Безопасная разработка программного обеспечения;
- In-SECA. Security Champion;
- Учебный центр «Эшелон». Разработка безопасного ПО ГОСТ Р 56939—2016.
Зарубежные платформы и курсы по безопасной разработке
- Coursera. Открытая платформа со множеством платных и бесплатных онлайн-курсов. По теме безопасности для разработчика есть такие: "Secure Software Development" от University of Colorado или "Cybersecurity Specialization" от Университета Мэриленда;
- Udacity. Программа "Security Engineer Nanodegree" включает модули по безопасной разработке, оценке уязвимостей и многим другим аспектам безопасности;
- edX. Курсы, такие как "Introduction to Cyber Security" от NYU и "Computer Security" от University of Maryland, предоставляют обширные знания о принципах кибербезопасности и их применении;
- Udemy. Курс "Web Security: Common Vulnerabilities & Their Mitigation" предлагает практические знания о защите веб-приложений от распространенных угроз.
Также, чтобы получить навыки безопасной разработки веб-приложений, программисту стоит пройти сертификацию и поглубже изучить тему этичного хакинга. Варианты:
- Certified Ethical Hacker (CEH). Сертификация от EC-Council, охватывающая множество аспектов безопасности, включая тестирование веб-приложений на проникновение.
- Offensive Security Certified Professional (OSCP). Сертификация от Offensive Security, требующая практических навыков тестирования на проникновение и глубоких знаний безопасности.
- Certified Information Systems Security Professional (CISSP). Сертификация от (ISC)², охватывающая широкий спектр тем, связанных с кибербезопасностью, включая безопасную разработку приложений.