лаба3
.docx
Федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
«ОМСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»
Кафедра «Комплексная защиты информации»
Лабораторная работа
по курсу «Безопасность систем баз данных»
Лабораторная работа №3
Выполнили:
Студенты 2-го курса
Принял:
Самотуга А.Е.
Омск 2023
Выполнение
Часть 1. Изучить настройки СУБД, которые влияют на безопасность работы с ней
Рисунок 1 Перешли в панель администратора
Рисунок 2 Настроили подключение по ssh
Рисунок 3 Настроили тип ОС
Рисунок 4 Вывели настройки безопасности
Рисунок 5 Установка компонента защиты пароля
Рисунок 6 удаление анонимных пользователей
Рисунок 7 Вывели настройки надежности пароля
Часть 2. Изучить внутренние механизмы защиты БД
Рисунок 8 создали бд и таблицу для шифрованных данных
Рисунок 9 Вставили шифрованные данные
Рисунок 10 Вывели расшифрованные данные
Рисунок 11 Создали таблицу логов
Рисунок 124 Создали триггер до вставки данных
Рисунок 13 Вставили данные в таблице
Текст триггера
CREATE DEFINER = CURRENT_USER TRIGGER `lab3`.`user_BEFORE_INSERT` BEFORE INSERT ON `user` FOR EACH ROW
BEGIN
IF new.Name NOT LIKE 'Admin' THEN
SIGNAL SQLSTATE '45000'
SET message_text = 'Вначале напиши Admin';
end if;
SET new.Age = IF(new.Age IS NULL, 'Age not specified', new.Age);
SET new.Name = IF(new.Name IS NULL, 'Name not specified', new.Name);
IF length(new.Name) > 40 or (new.Age) > 80 THEN
SIGNAL SQLSTATE '45000'
SET message_text = 'Слишком длинное имя или большой возраст.';
end if;
INSERT INTO Logs(`Name`,`Age`,`Phone`,`hobby`,`date`,`oper`,`auth`)
VALUES (new.`Name`,new.`Age`,new.`Phone`,new.`hobby`,NOW(),'Вставка данных',USER());
END
Рисунок 14 создали пользователей и выдали им привелегии
Рисунок 15 проверка работы привелегий
Рисунок 16 Создали представление, в котором только имя и возраст
Рисунок 17 Проверили, что выводятся только имена и возраст
Рисунок 5 Реализовали транзакцию
Рисунок 6 Вывели привилегии созданного в транзакции пользователя
Рисунок 20 Создали хранимую процедуру
Рисунок 7 Вызвали хранимую процедуру
Рисунок 22 Вывели полученные значения
Рисунок 23 Проверили успешное выполнение шифрования процедурой
Текст хранимой процедуры
CREATE DEFINER=`root`@`localhost` PROCEDURE `Crypt_comm_table`(IN Crypt_key VARCHAR(45))
BEGIN
DECLARE C_comm_id INT;
DECLARE C_nick VARCHAR(50);
DECLARE C_comment VARCHAR(50);
DECLARE done INT default 0;
DECLARE Crypt_cursor cursor for SELECT * FROM lab3.comment;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done =1;
DROP TABLE IF EXISTS lab3.crypto_comm;
CREATE TABLE crypto_comm (
id INT NOT NULL AUTO_INCREMENT,
nick VARBINARY(200) NOT NULL,
`comment` VARBINARY(200) NOT NULL,
PRIMARY KEY (id) )
ENGINE=InnoDB AUTO_INCREMENT=1;
OPEN Crypt_cursor;
REPEAT FETCH Crypt_cursor INTO C_comm_id,C_nick,C_comment;
IF NOT done THEN
INSERT INTO crypto(id,nick,`comment`)
VALUES(C_comm_id,AES_ENCRYPT(C_nick,Crypt_key),AES_ENCRYPT(C_comment,Crypt_key));
END IF;
UNTIL done END REPEAT;
SELECT * FROM crypto_comm;
CLOSE Crypt_cursor;
END
Рисунок 24 Настроили подключение по ssh для админа
Рисунок 25 Включили general_log
2.8 Если поддерживается, попробовать реализовать подключение к серверу БД с использованием сертификатов (необязательно, + 2 доп балла)
Рисунок 268 Настроили подключение с использованием SSL
Рисунок 27 Сообщение об успешном включении SSL
Часть 3 3. Выбрать на свое усмотрение использование какой-либо угрозы БД
Если не проверять входные данные и не подготовить операторы должным образом, вместе с запросом на ваш сервер могут проникнуть ненадежные данные, которые приведут к выполнению вредоносного кода вашим интерпретатором. Это называется инъекцией. Злоумышленник может ввести код (SQL, XXE, OS, LDAP и других типов) в форму на сайте, поэтому важно настроить фильтрацию входящей информации.
Рисунок 28 вставка данных
Рисунок 29 вывод бд
Рисунок 30 проверка уязвимости кода (вставка скрипта)
Рисунок 31 уязвимость не сработала
Вывод
В ходе выполнения данной лабораторной работы мы изучили параметры безопасности MySQL, разграничение доступа с использованием представлений, учетных записей пользователей, а также изучили триггеры, хранимые процедуры, транзакции. Изучили XSS-уязвимость и защитились от нее.