Разработка системы организации конференции
|
АННОТАЦИЯ 2
ВВЕДЕНИЕ 5
1 ТЕХНОЛОГИИ СОЗДАНИЯ ВЕБ-ПРИЛОЖЕНИЙ И МОДЕЛЬ УГРОЗ 7
1.1 OWASP TOP 10 7
1.2 Технология JWT 11
1.3 Технология OAuth 2.0 15
1.4 Платформа Android 16
1.5 Веб-сервер Apache Tomcat 16
1.6 СУБД PostgreSQL 18
1.7 Технология Push 19
1.8 Выводы по главе 20
2 СТРУКТУРА СИСТЕМЫ ОРГАНИЗАЦИИ КОНФЕРЕНЦИЙ 21
2.1 Регистрация и авторизация в системе 22
2.2 Создание конференции 23
2.3 Подтверждение и отклонение докладов 24
2.4 Рассылка сообщений участникам конференции 25
2.5 Просмотр информации о конференциях 25
2.6 Регистрация доклада 26
2.7 Получение уведомлений 27
2.8 Выводы по главе 27
3 ПРОГРАММНАЯ РЕАЛИЗАЦИЯ СИСТЕМЫ ОРГАНИЗАЦИИ
КОНФЕРЕНЦИЙ 29
3.1 База данных 29
3.2 Веб-сервер 35
3.3 Android - приложение 40
3.4 Выводы по главе 45
4 ТЕСТИРОВАНИЕ СИСТЕМЫ 48
4.1 Тестирование защиты от SQL-инъекций 48
4.2 Тестирование проверки прав при попытке доступа по ссылке 49
4.3 Тестирование проверки прав при изменении объектов 50
4.4 Выводы по главе 50
ЗАКЛЮЧЕНИЕ 51
БИБЛИОГРАФИЧЕСКИЙ СПИСОК 54
ПРИЛОЖЕНИЕ 1 Текст программы 56
ВВЕДЕНИЕ 5
1 ТЕХНОЛОГИИ СОЗДАНИЯ ВЕБ-ПРИЛОЖЕНИЙ И МОДЕЛЬ УГРОЗ 7
1.1 OWASP TOP 10 7
1.2 Технология JWT 11
1.3 Технология OAuth 2.0 15
1.4 Платформа Android 16
1.5 Веб-сервер Apache Tomcat 16
1.6 СУБД PostgreSQL 18
1.7 Технология Push 19
1.8 Выводы по главе 20
2 СТРУКТУРА СИСТЕМЫ ОРГАНИЗАЦИИ КОНФЕРЕНЦИЙ 21
2.1 Регистрация и авторизация в системе 22
2.2 Создание конференции 23
2.3 Подтверждение и отклонение докладов 24
2.4 Рассылка сообщений участникам конференции 25
2.5 Просмотр информации о конференциях 25
2.6 Регистрация доклада 26
2.7 Получение уведомлений 27
2.8 Выводы по главе 27
3 ПРОГРАММНАЯ РЕАЛИЗАЦИЯ СИСТЕМЫ ОРГАНИЗАЦИИ
КОНФЕРЕНЦИЙ 29
3.1 База данных 29
3.2 Веб-сервер 35
3.3 Android - приложение 40
3.4 Выводы по главе 45
4 ТЕСТИРОВАНИЕ СИСТЕМЫ 48
4.1 Тестирование защиты от SQL-инъекций 48
4.2 Тестирование проверки прав при попытке доступа по ссылке 49
4.3 Тестирование проверки прав при изменении объектов 50
4.4 Выводы по главе 50
ЗАКЛЮЧЕНИЕ 51
БИБЛИОГРАФИЧЕСКИЙ СПИСОК 54
ПРИЛОЖЕНИЕ 1 Текст программы 56
При организации любого мероприятия остро встает вопрос о составлении его расписания. Эта задача всегда была и до сих пор остается очень трудоемким занятием, и зачастую решается интуитивно. Подобный подход приводит к множеству проблем, таких как повышение расходов на проведение мероприятия и недовольству его участников. Между тем, данную задачу можно решить довольно рационально, используя современные технологии.
Теория расписаний является одним из разделов исследования операций. Термин теория расписаний предложил Р. Беллман в 1956 году. Методы и алгоритмы решения задач теории расписаний применяются для решения задач комбинаторной оптимизации [1].
Для составления грамотного расписания конференции, необходимо учесть такие факторы, как количество участников, время их приезда и отъезда, аудиторный фонд, имеющиеся секции, доступное время для проведения докладов, сроки работы конференции.
Автоматизированная система сбора и обработки данных сможет составить максимально эффективное расписание. Основными её частями должны быть система сбора данных от участников конференции и система их обработки, т.е. система составления расписания. Первой частью такой системы может являться мобильное приложение, а второй - сервер.
Актуальность данной темы обусловлена необходимостью составления расписания с учетом множества факторов. Правильно составленное расписание позволит более рационально использовать время, сократить сроки проведения конференции, тем самым уменьшить затраты на её проведение, сократить затраты на перемещение и проживание участников конференции. Так же такая система позволит повысить удовлетворенность участников конференции её организацией.
Объектами исследования является расписание работы конференции, создаваемое участниками конференции в процессе обмена данными с сервером.
Предметом исследования являются данные о конференции, такие, как доступные аудитории, время, существующие секции, а также зарегистрированные участники и их доклады, хранящиеся на сервере.
Целью работы является разработка мобильного приложения для связи участников конференции и оргкомитета и обеспечения передачи данных о докладах и времени выступления между мобильным устройством и сервером баз данных.
В работе поставлены и решены следующие задачи:
- анализ существующих программных продуктов, направленных на информационную поддержку участников конференции;
- реализация серверной части, осуществляющей обработку и хранение данных;
- реализация Android-приложения, осуществляющего сбор данных с пользователей и отправку их на сервер, а также отображение полученной с сервера информации;
- тестирование реализованной системы.
Теория расписаний является одним из разделов исследования операций. Термин теория расписаний предложил Р. Беллман в 1956 году. Методы и алгоритмы решения задач теории расписаний применяются для решения задач комбинаторной оптимизации [1].
Для составления грамотного расписания конференции, необходимо учесть такие факторы, как количество участников, время их приезда и отъезда, аудиторный фонд, имеющиеся секции, доступное время для проведения докладов, сроки работы конференции.
Автоматизированная система сбора и обработки данных сможет составить максимально эффективное расписание. Основными её частями должны быть система сбора данных от участников конференции и система их обработки, т.е. система составления расписания. Первой частью такой системы может являться мобильное приложение, а второй - сервер.
Актуальность данной темы обусловлена необходимостью составления расписания с учетом множества факторов. Правильно составленное расписание позволит более рационально использовать время, сократить сроки проведения конференции, тем самым уменьшить затраты на её проведение, сократить затраты на перемещение и проживание участников конференции. Так же такая система позволит повысить удовлетворенность участников конференции её организацией.
Объектами исследования является расписание работы конференции, создаваемое участниками конференции в процессе обмена данными с сервером.
Предметом исследования являются данные о конференции, такие, как доступные аудитории, время, существующие секции, а также зарегистрированные участники и их доклады, хранящиеся на сервере.
Целью работы является разработка мобильного приложения для связи участников конференции и оргкомитета и обеспечения передачи данных о докладах и времени выступления между мобильным устройством и сервером баз данных.
В работе поставлены и решены следующие задачи:
- анализ существующих программных продуктов, направленных на информационную поддержку участников конференции;
- реализация серверной части, осуществляющей обработку и хранение данных;
- реализация Android-приложения, осуществляющего сбор данных с пользователей и отправку их на сервер, а также отображение полученной с сервера информации;
- тестирование реализованной системы.
Данная работа посвящена разработке мобильного приложения для системы организации конференций. Входе работы был проведен анализ наиболее распространенных уязвимостей веб-приложений, к которым относятся и мобильные приложения, что позволило составить список требований к системе, для увеличения степени её защищённости, а именно:
- запросы к базе данных должны производиться через вызовы процедур внутри СУБД, что позволит проводить контроль типов, передаваемых данных, а также экранировать символы, которые могут быть восприняты как часть запроса;
- при регистрации пользователей их пароли не должны сохраняться в открытом виде;
- систему управления сессиями желательно организовать с использованием технологии JWT, что позволит не хранить на сервере токены доступа к системе;
- для построения системы следует применять известные, широко распространённые решения, т. к. в случае обнаружения в них уязвимостей, они будут быстро устранены;
- при запросе любых объектов на сервере, необходимо проверять права пользователя на доступ к ним.
Далее был разработан алгоритм работы системы, определены варианты её использования, в частности:
- создание и редактирование конференций организаторами;
- просмотр подробной информации о конференции участниками;
- регистрация докладов участниками системы;
- подтверждение или отклонение докладов организаторами;
- рассылка сообщений участникам конференции от организаторов;
- возможность подписываться на уведомления об определённой конфе - ренции.
На основе определенных требований безопасности была разработана система регистрации и авторизации пользователей, основанная на открытом протоколе OAuth 2.0 и определены внешние сервисы - поставщики учетных данных: Google и ВКонтакте.
На основе разработанного алгоритма работы системы, а также принятых требований безопасности, была спроектирована архитектура системы, состоящая из 3-х компонентов: мобильного приложения, веб-сервера и сервера баз данных.
Сервер баз данных построен на системе управления базами данных PostgreSQL и состоит из 9 таблиц:
- таблица конференций «conferences»;
- таблица секций «sections»;
- таблица докладов «reports»;
- таблица пользователей «users»;
- таблица сообщений рассылки «messages»;
- таблица токенов уведомлений «push_tokens»;
- таблица доступа к конференциям «conference_access»;
- таблицы избранных конференций «favorites»;
- таблица пользовательских уведомлений «notifications».
Веб-сервер основан на сервере Apache Tomcat. Он содержит 3 класса- обработчика пользовательских запросов: LoginServlet, GetDataServlet и CreateConfereceServlet, а также классы, предназначенные для работы с базой данных, и модельные классы данных. При этом запросы к базе данных реализованы через вызов функций непосредственно в СУБД, что позволяет осуществлять контроль типов и не допускать возможность встраивать SQL-код в запросы.
Мобильное приложение в свою очередь состоит из 9 экранов:
- главный экран;
- экран списка конференций;
- экран регистрации и авторизации;
- «Личный кабинет»;
- экран регистрации конференции;
- экран регистрации доклада;
- экран уведомлений;
- экран просмотра информации о конференции.
Помимо этого, оно имеет модельные классы данных полностью аналогичные соответствующим классам на сервере, что существенно упрощает их сериализацию для передачи по сети и последующую десериализацю.
В конце было проведено тестирование защищенности приложения от наиболее распространенных уязвимостей, применимых к мобильному приложению. По результатам тестирования можно сделать вывод, что приложение обладает необходимой защитой от наиболее распространенных атак, среди которых SQL-инъекции, проверка доступности объектов по прямым ссылкам, отсутствие проверки прав доступа.
- запросы к базе данных должны производиться через вызовы процедур внутри СУБД, что позволит проводить контроль типов, передаваемых данных, а также экранировать символы, которые могут быть восприняты как часть запроса;
- при регистрации пользователей их пароли не должны сохраняться в открытом виде;
- систему управления сессиями желательно организовать с использованием технологии JWT, что позволит не хранить на сервере токены доступа к системе;
- для построения системы следует применять известные, широко распространённые решения, т. к. в случае обнаружения в них уязвимостей, они будут быстро устранены;
- при запросе любых объектов на сервере, необходимо проверять права пользователя на доступ к ним.
Далее был разработан алгоритм работы системы, определены варианты её использования, в частности:
- создание и редактирование конференций организаторами;
- просмотр подробной информации о конференции участниками;
- регистрация докладов участниками системы;
- подтверждение или отклонение докладов организаторами;
- рассылка сообщений участникам конференции от организаторов;
- возможность подписываться на уведомления об определённой конфе - ренции.
На основе определенных требований безопасности была разработана система регистрации и авторизации пользователей, основанная на открытом протоколе OAuth 2.0 и определены внешние сервисы - поставщики учетных данных: Google и ВКонтакте.
На основе разработанного алгоритма работы системы, а также принятых требований безопасности, была спроектирована архитектура системы, состоящая из 3-х компонентов: мобильного приложения, веб-сервера и сервера баз данных.
Сервер баз данных построен на системе управления базами данных PostgreSQL и состоит из 9 таблиц:
- таблица конференций «conferences»;
- таблица секций «sections»;
- таблица докладов «reports»;
- таблица пользователей «users»;
- таблица сообщений рассылки «messages»;
- таблица токенов уведомлений «push_tokens»;
- таблица доступа к конференциям «conference_access»;
- таблицы избранных конференций «favorites»;
- таблица пользовательских уведомлений «notifications».
Веб-сервер основан на сервере Apache Tomcat. Он содержит 3 класса- обработчика пользовательских запросов: LoginServlet, GetDataServlet и CreateConfereceServlet, а также классы, предназначенные для работы с базой данных, и модельные классы данных. При этом запросы к базе данных реализованы через вызов функций непосредственно в СУБД, что позволяет осуществлять контроль типов и не допускать возможность встраивать SQL-код в запросы.
Мобильное приложение в свою очередь состоит из 9 экранов:
- главный экран;
- экран списка конференций;
- экран регистрации и авторизации;
- «Личный кабинет»;
- экран регистрации конференции;
- экран регистрации доклада;
- экран уведомлений;
- экран просмотра информации о конференции.
Помимо этого, оно имеет модельные классы данных полностью аналогичные соответствующим классам на сервере, что существенно упрощает их сериализацию для передачи по сети и последующую десериализацю.
В конце было проведено тестирование защищенности приложения от наиболее распространенных уязвимостей, применимых к мобильному приложению. По результатам тестирования можно сделать вывод, что приложение обладает необходимой защитой от наиболее распространенных атак, среди которых SQL-инъекции, проверка доступности объектов по прямым ссылкам, отсутствие проверки прав доступа.





