Телефон: 8-800-350-22-65
Напишите нам:
WhatsApp:
Telegram:
MAX:
Прием заявок круглосуточно
График работы офиса: с 9:00 до 21:00 Нск (с 5:00 до 19:00 Мск)

Статья опубликована в рамках: Научного журнала «Студенческий» № 19(357)

Рубрика журнала: Информационные технологии

Библиографическое описание:
Туголуков М.С., Яковлев М.В. МЕХАНИЗМЫ ПАРАМЕТРИЗОВАННОГО ВЫПОЛНЕНИЯ SQL-ЗАПРОСОВ КАК ЭШЕЛОН ЗАЩИТЫ ОТ SQL-ИНЪЕКЦИЙ: СРАВНИТЕЛЬНЫЙ АНАЛИЗ POSTGRESQL И MICROSOFT SQL SERVER НА ОСНОВЕ ПЛАНОВ ВЫПОЛНЕНИЯ // Студенческий: электрон. научн. журн. 2026. № 19(357). URL: https://sibac.info/journal/student/357/418666 (дата обращения: 30.05.2026).

МЕХАНИЗМЫ ПАРАМЕТРИЗОВАННОГО ВЫПОЛНЕНИЯ SQL-ЗАПРОСОВ КАК ЭШЕЛОН ЗАЩИТЫ ОТ SQL-ИНЪЕКЦИЙ: СРАВНИТЕЛЬНЫЙ АНАЛИЗ POSTGRESQL И MICROSOFT SQL SERVER НА ОСНОВЕ ПЛАНОВ ВЫПОЛНЕНИЯ

Туголуков Максим Сергеевич

студент, Институт экономики и финансов, Российский университет транспорта,

РФ, г. Москва

Яковлев Михаил Валерьевич

студент, Институт экономики и финансов, Российский университет транспорта,

РФ, г. Москва

Гринчар Николай Николаевич

научный руководитель,

канд. экон. наук, доц., Институт экономики и финансов, Российский университет транспорта

РФ, г. Москва

PARAMETERIZED SQL QUERY EXECUTION MECHANISMS AS AN ECHELON OF PROTECTION AGAINST SQL INJECTIONS: A COMPARATIVE ANALYSIS OF POSTGRESQL AND MICROSOFT SQL SERVER BASED ON EXECUTION PLANS

 

Tugolukov Maxim Sergeevich

Student, Institute of Economics and Finance, Russian University of Transport,

Russia, Moscow

Yakovlev Mikhail Valerievich

Student, Institute of Economics and Finance, Russian University of Transport, Russia, Moscow

Grinchar Nikolay Nikolaevich

Scientific Supervisor, Candidate of Economics, Associate Professor, Institute of Economics and Finance, Russian University of Transport

Russia, Moscow

 

АННОТАЦИЯ

Сравнительный анализ механизмов параметризованного выполнения SQL-запросов в PostgreSQL 16 и Microsoft SQL Server 2022 в контексте противодействия SQL-инъекциям. Исследование особенностей компиляции SQL-выражений и планов выполнения запросов на стадиях Parse, Bind и Optimize. Анализ различий между протокольным разделением кода и данных в PostgreSQL и механизмом автоматической параметризации литералов в Microsoft SQL Server. Оценка ограничений параметризации при атаках, изменяющих структуру синтаксического дерева запроса (AST), а также возможностей использования кэша планов выполнения для аудита безопасности приложений.

ABSTRACT

Comparative analysis of parameterized SQL query execution mechanisms in PostgreSQL 16 and Microsoft SQL Server 2022 in the context of countering SQL injections. Investigation of the features of compilation of SQL expressions and query execution plans at the Parse, Bind and Optimize stages. Analysis of the differences between the protocol separation of code and data in PostgreSQL and the mechanism of automatic parameterization of literals in Microsoft SQL Server. Evaluation of parameterization limitations in attacks that alter the structure of the query syntax tree (AST), as well as the possibilities of using the execution plan cache to audit application security.

 

Ключевые слова: SQL-инъекция, параметризация запросов, PostgreSQL, Microsoft SQL Server, план выполнения запроса, информационная безопасность.

Keywords: SQL injection, query parameterization, PostgreSQL, Microsoft SQL Server, query execution plan, information security.

 

1. Введение

SQL-инъекции остаются одним из наиболее распространенных классов уязвимостей веб-приложений и входят в перечень критических рисков проекта OWASP Top 10. Основной причиной их возникновения является нарушение разделения программного кода и пользовательских данных при формировании SQL-запросов.

Современные СУБД выполняют синтаксический анализ и оптимизацию SQL-запросов, что позволяет использовать параметризацию как дополнительный механизм защиты. При этом параметризация применима только к литеральным значениям и не распространяется на структурные элементы SQL-грамматики, формирующие синтаксическое дерево запроса (AST).

Целью исследования является сравнительный анализ механизмов параметризованного выполнения запросов в PostgreSQL и Microsoft SQL Server, а также оценка их эффективности в контексте противодействия SQL-инъекциям.

2. Материалы и методы

Исследование проводилось на стенде, включающем PostgreSQL 16 под управлением Debian 12 и Microsoft SQL Server 2022 Developer Edition под управлением Windows Server 2022.

В качестве инструментов анализа использовались:

• EXPLAIN (ANALYZE, VERBOSE, BUFFERS) и расширение pg_stat_statements для PostgreSQL;

• XML-представления SHOWPLAN и представление sys.dm_exec_query_stats для Microsoft SQL Server.

Методика эксперимента предусматривала моделирование:

• тавтологических SQL-инъекций;

• UNION-инъекций;

• инъекций в ORDER BY;

• динамически формируемых идентификаторов.

Анализ выполнялся путем сопоставления AST запросов, операторов Filter/Scan и параметрических узлов Param и ParameterList.

3. Результаты и обсуждение

3.1. PostgreSQL

В PostgreSQL отсутствует механизм автоматической параметризации ad-hoc SQL-запросов, аналогичный Forced Parameterization в Microsoft SQL Server. Защита достигается за счет Extended Query Protocol, реализующего разделение стадий Parse, Bind и Execute.

PREPARE q(text) AS

SELECT *

FROM users

WHERE name = $1;

Листинг 1. Подготовленный запрос в PostgreSQL

На стадии Parse PostgreSQL формирует AST запроса с параметрическими узлами Param, а фактические значения передаются позднее на стадии Bind.

EXECUTE q(' OR 1=1 --');

Листинг 2. Передача вредоносной нагрузки как параметра

В результате вредоносная строка интерпретируется как литерал и не изменяет структуру предиката.

Безопасность в PostgreSQL обеспечивается не автоматической трансформацией SQL-текста, а разделением кода и данных на уровне протокола взаимодействия клиента и сервера. При использовании простого протокола запросов, ручной конкатенации строк или dynamic SQL защита отсутствует, поскольку сервер получает уже сформированное SQL-выражение.

3.2. Microsoft SQL Server

Microsoft SQL Server поддерживает механизм автоматической параметризации запросов, реализуемый на уровне оптимизатора.

ALTER DATABASE testdb

SET PARAMETERIZATION FORCED;

Листинг 3. Активация Forced Parameterization

В режиме Forced Parameterization SQL Server заменяет литеральные константы параметрами на стадии оптимизации запроса.

<ParameterList>

    <ColumnReference Column="@P0"

                     ParameterDataType="nvarchar(4000)" />

</ParameterList>

Листинг 4. Фрагмент XML-плана SQL Server

Однако параметризация выполняется после синтаксического анализа, поэтому SQL-инъекции, изменяющие AST запроса, не предотвращаются.

SELECT *

FROM users

WHERE name = 'John' OR 1=1 --';

Листинг 5. Уязвимый динамический SQL

В данном случае оператор OR становится частью AST до стадии параметризации, вследствие чего логика запроса уже модифицирована.

Эксперимент также показал, что автоматическая параметризация не применяется к структурным элементам SQL, включая идентификаторы объектов, ORDER BY и DDL-конструкции.

3.3. Кэш планов выполнения как объект аудита

Кэш планов выполнения может использоваться как инструмент аудита безопасности. Анализ pg_stat_statements и sys.dm_exec_query_stats позволяет выявлять запросы, не использующие параметризацию и формируемые динамически.

Большое количество схожих запросов, различающихся только литеральными значениями, может указывать на отсутствие безопасного разделения кода и данных.

3.4. Сравнительная характеристика механизмов

Таблица 1.

Сравнение механизмов параметризованного выполнения запросов

Характеристика

PostgreSQL 16

MSSQL 2022

Основной механизм

Extended Query Protocol

Forced Parameterization

Уровень реализации

Протокольный

Оптимизатор

Auto-parameterization

Отсутствует

Частично поддерживается

Разделение кода и данных

Явное

Ограниченное

Защита литеральных значений

Высокая

Ограниченная

Защита structural context

Отсутствует

Отсутствует

Средства анализа

pg_stat_statements

sys.dm_exec_query_stats

 

4. Заключение

PostgreSQL и Microsoft SQL Server используют различные механизмы параметризованного выполнения запросов: протокольное разделение кода и данных и автоматическую шаблонизацию литералов соответственно.

Установлено, что параметризация эффективно ограничивает SQL-инъекции в контексте литеральных значений, но не предотвращает атаки, изменяющие структуру SQL-запроса. Наиболее уязвимыми остаются сценарии динамического формирования структурных элементов SQL-грамматики.

Анализ планов выполнения и кэша запросов может использоваться как дополнительный инструмент аудита безопасности прикладных систем.

 

Список литературы:

  1. OWASP Top 10 Project. – URL: https://owasp.org/Top10/ (дата обращения: 21.05.2026).
  2. Microsoft Learn — Query Processing Architecture Guide. – URL: https://learn.microsoft.com/en-us/sql/relational-databases/query-processing-architecture-guide (дата обращения: 21.05.2026).
  3. PostgreSQL Documentation — Frontend/Backend Protocol Flow. – URL: https://www.postgresql.org/docs/current/protocol-flow.html (дата обращения: 21.05.2026).
  4. Введение в системы баз данных / К. Дж. Дейт. – 8-е изд. – Москва : Вильямс, 2023. – 1328 с.
  5. Леденев С. С. Методы противодействия SQL-инъекциям на уровне СУБД // Вопросы кибербезопасности. – 2023. – № 4(52). – С. 45–52.