
МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ,
СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»
(СПбГУТ)
Факультет: Кибербезопасности
Кафедра: Защищенных систем связи
Дисциплина: Основы построения сертифицированных защищенных БД РФ
ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ №7
РЕАЛИЗАЦИЯ ИНТЕРФЕЙСА АВТОРИЗАЦИИ С БАЗОЙ ДАННЫХ POSЕTGRESQL
(тема отчета)
Направление/специальность подготовки
10.03.01 Информационная безопасность
(код и наименование направления/специальности)
Выполнили работу:
Травкина Е.А., ИКБ-14
(Ф.И.О., № группы) (подпись)
Федченко А.С., ИКБ-14
(Ф.И.О., № группы) (подпись)
Ящук А.А., ИКБ-14
(Ф.И.О., № группы) (подпись)
Принял работу:
к.т.н., доцент, Пестов И.Е.
(должность, Ф.И.О.) (подпись)
Оглавление
Цель работы 3
Задачи 3
Ход работы 3
Разработка веб-интерфейса 3
Демонстрация уязвимости 6
Вывод 8
Приложение 10
Цель работы
Реализовать защищенный веб-интерфейс авторизации с хранением данных в таблицах PostgreSQL.
Задачи
В ходе выполнения работы будут решаться следующие задачи:
создать веб-приложение с простым интерфейсом для авторизации юзеров;
реализовать хранение данных пользователей в базе данных PostgreSQL;
продемонстрировать уязвимость SQL-инъекций и методы защиты;
сравнить поведение приложения с защитой и без неё.
Ход работы
Разработка веб-интерфейса
В рамках лабораторной работы был создан веб-интерфейс на Python с использованием фреймворка Flask. Интерфейс разработан с минималистичным дизайном, ориентированным на функциональность.
Приложение включает в себя:
Страницу авторизации (см. Рис. 1):
поля ввода: имя пользователя и пароль;
кнопка подтверждения данных;
кнопка регистрации.
Рис. 1. Страница авторизации
Страницу приветствия. Отображение имени пользователя после успешной авторизации или информации о неверно введенных данных (см. Рис. 2, 3).
Рис. 2. Страница успешного входа
Рис. 3. Страница ошибки входа
Все элементы интерфейса оформлены с использованием стандартного HTML и CSS.
На начальном этапе работы была настроена база данных (см. Рис. 4) PostgreSQL для хранения данных пользователей. Для этого была создана база данных с именем authdb, а также пользователь authuser с паролем securepassword. Этому пользователю были предоставлены все необходимые привилегии на управление базой данных. Эти действия обеспечили основу для взаимодействия веб-приложения с базой данных, в которой будут храниться логины и хэшированные пароли пользователей.
Рис. 4. Настройка базы данных
После настройки базы данных была организована структура проекта. В директории рабочего окружения была создана папка auth_site (см. Рис. 5), которая будет содержать все файлы приложения. В рамках этой папки с помощью Python была создана изолированная среда (виртуальное окружение) с использованием команды python3 -m venv venv. Это изолированное окружение позволяет установить необходимые библиотеки Python без влияния на глобальную систему. Для работы с окружением оно было активировано с помощью команды source venv/bin/activate.
Рис. 5. Структура проекта
Далее в изолированном окружении были установлены основные библиотеки (см. Рис. 6), необходимые для реализации приложения. Это библиотека Flask для создания веб-приложения, psycopg2-binary для взаимодействия с PostgreSQL и bcrypt для безопасного хэширования паролей. Установка этих библиотек позволила подготовить основу для разработки функционала приложения.
Рис. 6. Установка библиотек
Следующим шагом была реализация основной логики приложения. Для этого был создан файл app.py (Приложение 1), в котором реализованы маршруты для обработки запросов авторизации и регистрации. В этом файле также было добавлено взаимодействие с базой данных, включая регистрацию новых пользователей с хэшированием их паролей и проверку данных при авторизации.
Для обеспечения пользовательского интерфейса была создана папка templates (см. Рис. 7), в которой хранятся HTML-шаблоны приложения. В этой папке был создан файл login.html (Приложение 2), представляющий страницу авторизации. В нём реализован простой веб-интерфейс с минималистичным дизайном: светлый фон, текстовые поля для ввода имени и пароля, а также кнопки для отправки данных и перехода на страницу регистрации. Этот шаблон стал связующим звеном между пользователем и серверной логикой, реализованной в app.py.
Рис. 7. Продолжение создания структуры приложения
В результате проделанной работы было создано полноценное веб-приложение с базой данных и веб-интерфейсом. Оно стало основой для демонстрации уязвимости SQL-инъекций и методов защиты от них.