news
Serverspace в «Рейтинге провайдеров IaaS Enterprise 2023» от Market.CNews
KA
30 мая 2023
Обновлено 22 июля 2023

Защита от SQL-инъекций базы данных на Linux

Debian Базы данных Сети

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

SQL

SQL (Structured Query Language) — это язык, который имеет строгие синтаксические правила при построении запросов и выполняет функцию управления реляционными базами данных. Это декларативный язык, который упрощает запрос к базе данных. Вы можете получить к нему прямой доступ или использовать язык программирования с предустановленными библиотеками.

Защита от SQL-инъекций

Первое и самое главное действие по обеспечению безопасности в любой системе довольно простое, нам нужно обновить программное обеспечение машины. В Debian эта команда будет:

sudo apt update && sudo apt upgrade -y
Обновление пакетов
Скриншот №1 — Обновление пакетов

Затем мы используем библиотеку Python для запроса нашей базы данных. Загрузите необходимый пакет:

pip install psycopg2
Установка psycopg2
Скриншот №2 — Установка psycopg2

Если вы видите сообщение об ошибке «команда pip не найдена» в системе Debian, введите эту команду:

sudo apt-get install python3-pip

Если вы видите сообщение об ошибке “Could not find a version that satisfies the requirement psycopg2”, введите эту команду:

pip install psycopg2-binary

Проверка осуществляется с помощью этой команды в CLI:

pip --version
Установка пакетного менеджера pip
Скриншот №3 —Установка пакетного менеджера pip

Параметризованные запросы

Предположим у вас есть веб—приложение, которое позволяет пользователям искать продукты по названию. Вместо запроса вида:

SELECT * FROM products WHERE name = 'searchterm';

Вам нужно использовать параметризованный запрос, который может определить тип вводимых данных, как в этой конфигурации:

SELECT * FROM products WHERE name = ?;

And pass the search term as a parameter, for example, present below:

import psycopg2

conn = psycopg2.connect(database="mydb", user="myuser", password="mypassword", host="localhost", port="5432")

cur = conn.cursor()

search_term = "apple"

cur.execute("SELECT * FROM products WHERE name = %s;", (search_term,))

rows = cur.fetchall()

for row in rows:
print(row)

conn.close()

Первый метод
Скриншот №4 — Первый метод

Проверка вводимых данных

Допустим, у вас есть форма, в которой пользователи могут оставлять комментарии. Прежде чем вставлять комментарий в базу данных, проверьте вводимые данные, чтобы убедиться, что они содержат только допустимые символы. Например, в PHP вы можете использовать функцию preg_match для проверки наличия буквенно—цифровых символов и пробелов.

$comment = $_POST['comment'];

if (!preg_match('/^[a-zA-Z0-9 ]+$/', $comment)) {
// Invalid input, do something
} else {
// Insert comment into database
}

Второй метод
Скриншот №5 — Второй метод

Доступ с наименьшими привилегиями

Допустим, у вас есть база данных с несколькими таблицами, и вы хотите создать пользователя, который может считывать данные только из одной таблицы. Создайте нового пользователя и предоставьте ему ограниченные права. Пример ниже:

CREATE USER readonly_user;
GRANT SELECT ON products TO readonly_user;

Обработка ошибок

Допустим, у вас есть форма входа в систему, в которой пользователи могут ввести свое имя пользователя и пароль. При возникновении ошибки, такой как неправильное имя пользователя или пароль, отобразите общее сообщение об ошибке вместо подробного. Например, в Java вы можете перехватить исключение SQLException и отобразить общее сообщение об ошибке.

try {
// Execute query to check if the username and password match
} catch (SQLException e) {
System.out.println("Error: Could not log in.");
}
Третий метод
Скриншот №6 — Третий метод

Вывод

В заключение следует отметить, что безопасность веб—приложений является важнейшим аспектом разработки программного обеспечения. Атаки с использованием SQL—инъекций являются одними из наиболее распространенных типов атак на базы данных, которые могут привести к значительному ущербу для организаций. Чтобы предотвратить их, важно изучить основные принципы языка SQL и его уязвимости, изучить методы SQL—инъекций и проанализировать примеры кода, содержащие уязвимости.

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

Оценка:
5 из 5
Аverage rating : 5
Оценок: 1
191028 Санкт-Петербург Литейный пр., д. 26, Лит. А
+7 (812) 403-06-99
700 300
ООО «ИТГЛОБАЛКОМ ЛАБС»
700 300

Вам также может быть интересно...