Метод захисту систем управління базами даних від атаки SQL-ін’єкції на ідентифікатор
Autor: | Anna Dadonova, Ivan Yakoviv, Valerii Kozlovskiy |
---|---|
Jazyk: | angličtina |
Rok vydání: | 2021 |
Předmět: | |
Zdroj: | Science-based technologies; Vol. 52 No. 4 (2021); 305-312 Наукоемкие технологии; Том 52 № 4 (2021); 305-312 Наукоємні технології; Том 52 № 4 (2021); 305-312 |
ISSN: | 2310-5461 2075-0781 |
Popis: | The article reviews SQL injection and SQL identifier injection attacks in database management systems, identifies their nature, the threats they pose, and the types of these attacks. A new method of protecting database management systems from SQL identifier injection attacks is also covered. Proposed solution are functions that can be added to the prepared API statements: setColumnName: uses the column name and its index as arguments and setTableName: uses the table name and its index as arguments. This method allows you to prepare operators to fill placeholders with table and column names, prevents SQL-IDIA, does not skip schema information, has no restrictions on input-based sanitation approaches. These two features help prevent database management systems from leaking confidential database information by performing a default operation when the input column or table name does not exist in the database. For example, if a column name is used in a particular function and the column name is invalid, the database management system will sort the results by the first column of the table. Only the table and column names in our advanced API were examined, as GitHub analysis showed that 96% of concatenated IDs were table and column names. In all experiments, the new setColumnName feature surpassed the implementation of dynamic whitelisting. In two experiments, the implementation of a static whitelist slightly exceeded the name function of the new set of columns. Although this special approach has little performance advantage, whitelisting approaches can add non-trivial complexity to program code and lead to erroneous results. The new setColumnName feature has successfully prevented all these attacks. Filling placeholders with column names is practical and effective compared to existing special approaches, does not create additional costs compared to the existing functions of the trained operator, and is effective against SQL identifier injection attack. У статті проведено огляд атак SQL-ін’єкції та SQL-ін'єкції на ідентифікатор у системах управління базами даних, визначено їх природу, загрози, які вони несуть, а також види цих атак. Також висвітлено новий метод захисту систем управління базами даних від атаки SQL-ін’єкції на ідентифікатор. Запропоноване рішення — функції, які можна додати до підготовлених операторів API: setColumnName: використовує назву стовпця та його індекс як аргументи та setTableName: використовує назву таблиці та його індекс як аргументи. Цей метод дозволяє підготувати оператори для заповнення плейсхолдерів іменами таблиць і стовпців, запобігає SQL-IDIA, не пропускає інформацію про схему, не має обмежень, які мають підходи, засновані на санітації вводу. Ці дві функції допомагають запобіганню системам управлінням бази даних від витоку конфіденційної інформації про базу даних, виконуючи операцію за замовчуванням, коли ім’я вхідного стовпця або таблиці не існує в базі даних. Наприклад, якщо ім’я стовпця використовується в певній функції і ім’я стовпця є недійсним, система управлінням бази даних упорядкуватиме результати за першим стовпцем таблиці. Ми розглядали лише назви таблиць і стовпців у нашому розширеному API, оскільки аналіз GitHub показав, що 96% конкатенованих ідентифікаторів були іменами таблиць і стовпців. У всіх експериментах нова функція setColumnName перевершила реалізацію динамічного білого списку. У двох експериментах реалізація статичного білого списку дещо перевершила функцію імені нового набору стовпців. Хоча цей спеціальний підхід має невелику перевагу в продуктивності, підходи до створення білого списку можуть внести нетривіальні складності в код програми та призвести до помилкових результатів. Нова функція setColumnName успішно запобігла всім цим атакам. Заповнення плейсхолдерів іменами стовпців є практичним та ефективним у порівнянні з існуючими спеціальними підходами, не створює додаткових витрат у порівнянні з існуючими функціями підготовленого оператора, і ефективний проти атак SQL-ін'єкції на ідентифікатор. |
Databáze: | OpenAIRE |
Externí odkaz: |