Основы веб-приложений [Complete web app pentesting series #2]
Веб-приложения играют важнейшую роль в современном интернете, обеспечивая основу для многих сервисов, которыми мы пользуемся ежедневно. Понимание основ веб-приложений и связанных с ними технологий крайне важно для всех, кто заинтересован в создании, работе с такими приложениями, а в нашем случае и в их тестировании безопасности или тестировании на проникновение. В этой статье рассматриваются основные фреймворки, библиотеки и языки программирования, используемые в веб-разработке, а также даются знания и ключевые концепции, которые помогут вам глубже понять эту тему.
Изучение веб-приложений
Веб-приложения — это программное обеспечение или программа, работающая на веб-сервере и доступная через веб-браузер. В отличие от традиционных настольных приложений, веб-приложения не требуют установки на устройство пользователя и доступны из любой точки мира, где есть подключение к Интернету.
Основные компоненты веб-разработки
Разработку веб-приложений можно разделить на три основных направления:
Разработка интерфейса: здесь, возможно, речь идёт о части, связанной с пользовательским интерфейсом (UI), с которым пользователи будут взаимодействовать напрямую. Ключевые технологии включают:
- HTML (язык разметки гипертекста): структурирует контент в Интернете.
- CSS (каскадные таблицы стилей): стили и макеты веб-страниц.
- JavaScript : добавляет интерактивность и динамическое поведение веб-страницам. Рассматриваются следующие фреймворки: React, Angular и Vue.js.
Back-end-разработка : серверная логика и взаимодействие с базой данных — вот что важно. Распространенные языки программирования:
Данные приложений хранятся в таких базах данных, как MySQL, PostgreSQL и MongoDB.
Full-Stack Development: это сочетание навыков front-end и back-end, чтобы разработчики могли фактически создать проект от начала до конца.
Фреймворки и библиотеки
Фреймворки и библиотеки упрощают разработку, предоставляя готовый код для решения распространённых задач. Вот некоторые из наиболее часто используемых фреймворков и библиотек для создания веб-приложений:
- React: библиотека для создания пользовательских интерфейсов на JavaScript.
- Angular: это платформа для создания мобильных и настольных веб-приложений.
- Vue.js: прогрессивный фреймворк для создания пользовательского интерфейса.
- Express.js (для Node.js): минималистичная и гибкая платформа веб-приложений Node.js.
- Django (для Python): среда для высокоуровневой разработки Python, способствующая быстрому созданию прототипов.
- Ruby on Rails: фреймворк серверных веб-приложений на основе Ruby.
Навыки программирования
Для эффективной разработки веб-приложений, безусловно, необходимы навыки программирования. Ниже перечислены некоторые необходимые знания для создания веб-приложений. Отнеситесь к этому списку с долей скепсиса: он не является исчерпывающим.
- Базовые знания HTML, CSS и JavaScript: обязательно для frontend-разработчика.
- Понимание серверных языков: умение работать как минимум с одним языком программирования на стороне сервера (например, ReactorJS, Python).
- Навыки управления базами данных: знакомство с базами данных SQL или MySQL.
- Системы контроля версий: отслеживание изменений в коде и знание Git.
Ключевые концепции (веб-API)
Чтобы лучше понять пентестинг веб-приложений, нам необходимо понять две основные концепции.
- Протокол HTTP : основа веб-передачи данных. Поскольку HTTP используется для управления запросами и ответами между клиентами и серверами, важно понимать, как он работает.
- API (интерфейсы прикладного программирования) : позволяют нескольким программным компонентам взаимодействовать друг с другом. Одним из распространённых вариантов использования является использование RESTful API для взаимодействия между front-end и back-end системами.
Теперь, когда мы понимаем, что такое API, давайте рассмотрим два основных API, которые чаще всего используются для создания веб-приложений.
REST против SOAP: более пристальный взгляд
При обсуждении API выделяются два основных стиля: SOAP (Simple Object Access Protocol) и **REST** (Representational State Transfer). Однако все они отличаются друг от друга и имеют разные сценарии использования.
- Форматы данных: REST поддерживает множество форматов данных, таких как JSON, XML, HTML и обычный текст, а JSON является наиболее распространенным из-за своего малого размера.
- Операции без сохранения состояния: информация, передаваемая клиентом серверу с каждым запросом, должна быть помещена в один запрос со всей информацией, необходимой для понимания и обработки запроса. Отсутствие сохранения состояния упрощает проектирование сервера.
- Кэширование: RESTful API может кэшировать данные для повышения производительности и загрузки на сервер.
- Используйте его там, где вам нужен простой в использовании API и высокая производительность.
- Подходит для масштабируемых и гибких приложений.
В отличие от REST API, здесь нет встроенного решения безопасности по умолчанию. Вместо этого они полагаются на внешние меры защиты коммуникаций:
- HTTPS: данные при передаче шифруются для защиты от перехвата данных и атак типа «злоумышленник посередине».
- OAuth 2.0 и JWT (JSON Web Tokens): часто используются под названием аутентификации и авторизации.
SOAP (простой протокол доступа к объектам)
Протокол был разработан специально для торговли структурированной информацией в видеосервисах. Он использует формат XML и известен своими строгими стандартами.
- Основанный на протоколе: как и REST, SOAP определяет некоторые правила структурирования сообщений, поэтому он более жесткий.
- WSDL (язык описания веб-сервисов): иногда сервисы SOAL указываются с помощью WSDL, который используется для определения того, как сервис обслуживается машиной.
- Встроенная безопасность: WS Security поддерживается SOAP, поскольку это безопасность связи на уровне сообщений.
- Они лучше всего подходят для приложений корпоративного уровня, где предъявляются высокие требования к безопасности и надежности транзакций.
- Лучше всего подходит для сложных операций, требующих строгих стандартов.
API SOAP имеют встроенную защиту с помощью WS-Security. Эта спецификация предоставляет платформу для защиты сообщений SOAP, реализуя:
- XML-шифрование: шифрует XML-данные, защищая конфиденциальность сообщения.
- Цифровые подписи: они подтверждают подлинность и целостность сообщения, предоставляя отправителю возможность подписать сообщение.
- Токены SAML: обеспечивают полностью безопасную аутентификацию и авторизацию пользователей.
В результате API-интерфейсы SOAP изначально более безопасны в среде, где происходит множество транзакций с конфиденциальными данными, например, в случае финансовых услуг или здравоохранения.
Понимание WSDL в SOAP
WSDL расшифровывается как язык описания веб-сервисов (Web Services Description Language). Это язык на основе XML, описывающий функциональность веб-сервиса SOAP. Файлы WSDL служат контрактами между поставщиками и потребителями сервисов, описывая порядок взаимодействия со сервисом.
Компоненты WSDL
Типичный документ WSDL включает несколько ключевых элементов:
- Типы: определяет типы данных, используемые в сообщениях, которыми обмениваются клиент и сервер.
- Сообщения: представляют собой абстрактное определение передаваемых данных.
- Типы портов: определяют набор операций, поддерживаемых службой.
- Привязки: определяет протоколы и форматы данных, используемые для связи.
- Службы: Группирует связанные порты, предоставляя точки доступа для клиентов.
Важность WSDL
WSDL способствует взаимодействию, предоставляя стандартизированный формат, позволяющий различным программным приложениям взаимодействовать независимо от их базовой технологии или языка программирования. Эта возможность самоописания упрощает интеграцию разнородных систем.
Понимание WSDL
Язык описания веб-сервисов (WSDL) — это аббревиатура. SOAP — это язык на основе XML, описывающий функциональность веб-сервиса SOAP. Файлы WSDL представляют собой соглашение между потребителями и поставщиками сервисов, определяющее способ взаимодействия двух сторон.
Компоненты WSDL
Типичный документ WSDL включает несколько ключевых элементов:
- Типы: Содержит определение типов данных сообщений, которыми обмениваются клиенты и серверы.
- Сообщения: абстрактное определение передаваемых данных.
- Типы портов: определяют набор операций, доступных для сервиса.
- Привязки: определяют, какие протоколы и форматы данных будут использоваться для связи.
- Сервисы: Группирует связанные порты и является точкой доступа для клиентов.
Другие альтернативы API
Помимо REST и SOAP, существуют и другие альтернативы, такие как GraphQL и gRPC:
- GraphQL: предоставляет клиентам всё необходимое для обеспечения избыточной или недостаточной выборки данных. Однако REST требует более сложного обучения, чем гибкости.
- gRPC: высокопроизводительный RPC-фреймворк для сериализации на основе буферов протоколов. Если вы ищете микросервисы, но не знаете синтаксис etc, то этот вариант вам подойдёт.
Заключение
Хотя люди часто воспринимают интернет как инструмент для развлечения, веб-приложения произвели революцию в том, как мы оплачиваем счета, общаемся с друзьями и семьёй и во многих отношениях сделали интернет неотъемлемой частью повседневной жизни. Эти приложения работают на основе API, таких как REST и SOAP, которые обеспечивают непрерывное взаимодействие между системами.
REST прост, гибок и отлично подходит для веб- и мобильных приложений, а SOAP обеспечивает надежную безопасность для корпоративных нужд. Выбранные вами инструменты и технологии помогут вам создавать безопасные и масштабируемые приложения.
Оригинальная статья | Перевод: THREAD