Введение

Oracle APEX (также известный как APEX) — это корпоративная платформа разработки приложений с минимальным объемом кодирования от Oracle Corporation. APEX используется для разработки и развертывания облачных, мобильных и настольных приложений. Платформа представляет собой веб-ориентированную интегрированную среду разработки (IDE) с широким набором функций, включая мастера, инструменты перетаскивания и редакторы свойств, упрощающие процесс создания приложений и страниц.

Окружение с низким уровнем кода

Хотя APEX существует с 2004 года в той или иной форме, недавно он был отнесен к новой категории платформ разработки приложений, называемых low-code. Эти low-code среды восходят к языкам программирования 4GL и инструментам быстрой разработки приложений (RAD). Поскольку APEX изначально позиционировался как инструмент RAD, такое развитие событий вполне закономерно. APEX позволяет создавать веб-приложения без написания кода. При более сложных требованиях APEX позволяет расширять low-code объекты с помощью декларативной платформы. Эта платформа позволяет разработчику определять собственную логику, бизнес-правила и пользовательские интерфейсы, используя SQL, PL/SQL, HTML, JavaScript, CSS, а также плагины APEX. APEX предоставляет разработчикам возможность переходить от разработки без кода к low-code и, при необходимости, к более традиционному кодированию.

Безопасность

Существует мнение, что абстрактный характер приложений APEX приводит к относительно безопасной пользовательской среде. Однако приложения APEX подвержены тем же классам уязвимостей, что и другие веб-приложения, основанные на более прямых технологиях, таких как PHP, ASP.NET и Java. Основными классами уязвимостей, влияющими на приложения APEX, являются: SQL-инъекция, межсайтовый скриптинг (XSS) и контроль доступа. Приложения APEX по своей сути используют конструкции PL/SQL в качестве базового языка на стороне сервера. Помимо доступа к данным через блоки PL/SQL, приложение APEX использует PL/SQL для реализации авторизации и условного отображения элементов веб-страницы. Это означает, что, как правило, приложения APEX уязвимы для SQL-инъекций, когда эти блоки PL/SQL некорректно проверяют и обрабатывают вредоносный пользовательский ввод. Oracle реализовал специальный тип переменных для APEX, называемый Substitution Variables (с синтаксисом &NAME), которые небезопасны и приводят к SQL-инъекциям. Если инъекция происходит внутри блока PL/SQL, злоумышленник может внедрить произвольное количество запросов или операторов для выполнения. Правильный способ кодирования для предотвращения XSS и SQL-инъекций – экранирование специальных символов и использование связывающих переменных. Уязвимости межсайтового скриптинга (XSS) возникают в приложениях APEX так же, как и в других веб-приложениях. Oracle предоставляет функцию `htf.escape_sc` для экранирования пользовательских данных, отображаемых в HTML-ответе. Отчеты, генерируемые APEX, также обеспечивают защиту от XSS посредством настройки "Display As" в столбцах отчетов. Изначально отчеты создавались по умолчанию без экранирования столбцов, однако в последних версиях тип столбца по умолчанию устанавливается с экранированием. Определения столбцов можно программно запрашивать для проверки столбцов, которые не экранируют значения. Для контроля доступа к ресурсам в приложении APEX разработчик может назначать схемы авторизации ресурсам (например, страницам и элементам). Эти схемы должны применяться последовательно, чтобы обеспечить надлежащую защиту ресурсов. Типичным примером непоследовательного контроля доступа является установка схемы авторизации для элемента "Кнопка", но не для связанного с ней операции, выполняемой при нажатии на кнопку. Злоумышленник может выполнить операцию (через JavaScript) без необходимости доступа к самой кнопке. Начиная с APEX 4.0, интерфейс Application Builder предоставляет ограниченную оценку состояния безопасности с помощью утилиты Advisor.

Библиотеки третьих сторон

Разработчики могут улучшать и расширять свои приложения APEX, используя библиотеки сторонних разработчиков. К ним относятся jQuery Mobile (пользовательский интерфейс на основе HTML5), jQuery UI (пользовательский интерфейс для веб-приложений), AnyChart (JavaScript/HTML5-диаграммы), CKEditor (веб-редактор текста) и другие. Эксперты отмечают, что одним из преимуществ установки последних патчей APEX является обновление внешних библиотек, поставляемых вместе с APEX. Однако многие из этих библиотек выпускают новые версии чаще, чем выходят патчи для APEX.

APEX и Oracle Database Express Edition (XE) (полное издание)

Oracle APEX может работать в составе Oracle Database Express Edition (XE) — бесплатной базы данных начального уровня. Несмотря на то, что функциональность APEX не ограничивается намеренно при работе в XE, ограничения движка базы данных могут препятствовать работе некоторых функций APEX. Также Oracle XE имеет ограничения на использование центрального процессора, памяти и дискового пространства.