Безопасность выполнения и обработки запросов#
В разделе описаны меры безопасности, применяемые при выполнении серверной логики, обработке пользовательского ввода и работе HTTP-интерфейсов системы.
Безопасность выполнения серверной логики#
В системе реализованы ограничения, направленные на безопасное выполнение серверной логики, включая выполнение выражений и сценариев.
ограничен доступ к SOAP-сервису, используемому для работы с шаблонами;
шедуллер запускается под разными пользователями; настройка разграничения пользователей для шедуллера не применяется;
вызов JEXL-выражений через SSH-консоль выполняется с использованием безопасного диалекта;
реализовано разграничение прав на выполнение JEXL-скриптов через веб-сокеты.
Защита от изменения логики SQL-запросов#
В системе реализован комплекс мер, направленных на предотвращение изменения логики SQL-запросов за счёт пользовательских данных. Эти меры обеспечивают защиту от SQL-инъекций и исключают возможность выполнения несанкционированных операций с базой данных.
Реализованные меры |
Описание реализации |
|---|---|
Экранирование пользовательского ввода |
Реализована функция |
Безопасное построение динамических SQL-запросов |
Реализован компонент |
Ограничение доступа к SQL-логике через JEXL |
Реализован доступ к пакетам базы данных через JEXL с возможностью ограничения доступа ко всему пакету или к отдельным методам. Пакеты не отображаются в списке объектов администратора. |
Разграничение доступа в REST-пакетах |
Реализована возможность разграничения доступа в REST-пакетах на уровне URL входящих запросов. |
Указанные меры применяются во всех компонентах системы, где пользовательские данные участвуют в формировании SQL-запросов, включая REST-интерфейсы и серверную логику.
Пример обработки запроса
GET /GLOBAL-QAS/gtk-ru.bitec.app.btk.utils.Btk_UrlObjectFinder%23UrlFinder/?ex;sTableName_dz=btk_user;SELECT+version()::int%3d1;+--+-&ex;susername=UIB_SCAN2 HTTP/1.1
Host: global-qas.sgc.oil.gas
Cookie: access_token=<JWT>
В результате обработки запроса SQL-инъекция нейтрализуется за счёт экранирования пользовательского ввода и безопасного формирования SQL-запроса. Выполнение внедрённого SQL-кода не происходит.
HTTP/1.1 400 Bad Request
Content-Type: application/json; charset=UTF-8
{
"error": "Invalid request parameters"
}
Информация о версии базы данных и иных характеристиках СУБД в ответе отсутствует.
Сокрытие информации о веб-сервере#
В целях снижения риска раскрытия технической информации HTTP-интерфейсы системы не передают сведения о типе и версии используемого веб-сервера.
Во всех HTTP-ответах исключена передача стандартных и расширенных заголовков, содержащих информацию о серверном программном обеспечении, включая Server, X-Powered-By, а также аналогичные заголовки сторонних компонентов и middleware.
Поведение единообразно для всех HTTP-эндпоинтов системы, включая REST-интерфейсы.
Пример
HTTP/1.1 303 See Other
location: https://global-qas.oil.gas/login/login.html?return-uri-Lw==
content-length: 0