Файл: Руководство пользователя для разработанной системы. Пятый раздел приводит данные по информационной безопасности приложения.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 23.11.2023
Просмотров: 147
Скачиваний: 2
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
1.1 Анализ некоторых существующих решений
1.1.4 Total Network Inventory 5
2.1 Планирование архитектуры сервиса
2.2 Обзор и определение основных технологий и средств
2.4 Организация хранения данных
3 Разработка программного обеспечения
3.1 Разработка программного средства
3.2 Разработка компонентов клиентского приложения
потому что именно его видит пользователь, а хороший пользовательский интерфейс привлекает пользователя, и этот уровень должен быть спроектирован правильно;
Это средний слой архитектуры. Этот уровень включает в себя логические вычисления и операции, выполняемые на этом уровне. Он обрабатывает команду, принимает логические решения и выполняет расчеты. Он также выступает в качестве промежуточного программного обеспечения между двумя окруженными слоями, то есть уровнем представления и уровнем данных. Он обрабатывает данные между этими двумя слоями. Этот слой реализует бизнес-логику и вычисления. Этот уровень также проверяет входные условия перед вызовом метода из уровня данных. Это гарантирует правильность ввода данных перед продолжением, а также часто может гарантировать правильность выходных данных. Эта проверка ввода называется бизнес-правилами;
Этот уровень используется для подключения бизнес-уровня к базе данных или источнику данных. Он содержит методы, которые используются для выполнения операций с базой данных, таких как вставка, удаление, обновление и т. д. Этот уровень содержит хранимые процедуры, которые используются для запросов к базе данных. Следовательно, этот уровень устанавливает соединение с базой данных (или с внешней API, будь то REST или GraphQL) и выполняет функции в базе данных.
Разработка приложения ведется на Dart, языке, который используется фреймворком Flutter. В фреймоворке есть механизм для добавления специальных пакетов. Список использованных в разработке пакетов приведен в листинге 2.1.
Листинг 2.1 – Список используемых пакетов
С помощью Flutter можно создать кроссплатформенное приложение под OS Windows, MacOS, Web, Android и iOS. Для того что бы собрать под MacOS и iOS необходимо наличие самой операционной системы MacOS, с помощью XCode. Необходимость его использования обусловлена тем, что для приложений под эти системы нужны сертификаты, которые генерируются только в XCode.
Пакет предоставляет средства интернационализации и локализации, включая перевод сообщений, множественное число и роды, форматирование и разбор даты / номера, а также двунаправленный текст.
Локализуемые сообщения записываются как функции, которые возвращают результат вызова Intl.message. Функция может быть запущена в программе до того, как будет выполнен какой-либо перевод, и просто вернет строку сообщения. Строка также можно извлечь в файл и затем может быть модифицирована так, чтобы она возвращала переведенную версию без изменения исходной программы [4].
Зависимость, которая предоставляет ряд возможностей при разработке приложения:
AutoRoute это пакет для генерации маршрутов, в которой автоматически создается все необходимое для навигации.
В Flutter маршруты используются для перехода между экранами.
Класс Navigator предоставляет возможность навигации по названному маршруту из любой части приложения с использованием общего идентификатора. В некоторых случаях также может понадобиться передать аргументы в именованный маршрут. Например, можно перейти к маршруту /user и передать информацию о пользователе по этому маршруту.
Плагин Flutter, который предоставляет возможность сгенерировать код для взаимодействия с GraphQL сервером из доступной схемы.
Плагин использует стандартный механизм Flutter для создания генерированного кода всех запросов, мутаций и объектов доступных внутри GraphQL схемы.
Зависимость для создания безопасного хранилища и предоставления репозитория в
Flutter, обеспечивающая легкий доступ к определенным платформозависимым службам.
Характерной чертой этой зависимости является то, что данные, которые сохраняются туда персистенты и хранятся между запусками приложения в шифрованном виде.
Стандартный плагин Flutter для предоставления возможностей интернационализации приложения.
Предоставляет инструменты и генерацию кода для всевозможных доступных локалей. Все переводы хранятся в специальных arb файлах.
Кроссплатформенная библиотека, предоставляющая хранилище по типу «ключ-значение» написанное на чистом Dart.
Одна из транзитивных зависимостей требуемых для storage_repositoryдля того, чтобы он мог работать на мобильной платформе.
Пакет build_runner предоставляет конкретный способ генерации файлов с использованием кода Dart вне таких инструментов, как pub. В отличие от pub / build, файлы всегда генерируются непосредственно на диске, а перестройки - инкрементные.
3.6 Разработка архитектуры приложения
Для реализации всей функциональности приложения в клиентской части существует лишь одна основная роль. Таким образом, учитывая аутентификацию можно выделить две основные структурные части:
По серверной части мы используем IdentityServer для авторизации и клиентов, а HotChocolate для поддержки GraphQL в ASP.NET Core. Таким образом можно выделить такие структурные части как:
Большинство приложений должны распознавать пользователей. Знание личности пользователя позволяет приложению безопасно сохранять пользовательские данные и предоставлять персонализированный опыт работы на любом устройстве. IdentityServer предоставляет основную работу с авторизацией и OAuth.
Вход в приложение, использующее IdentityServer, можно осуществить либо с помощью FirebaseUI как готовое решение предоставляющее все средства для работы с OAuth, либо ручная интеграция одного или нескольких методов входа в приложение.
Для вышеперечисленных компонентов был проведен поиск и подбор соответствующих инструментов и технологий, а также архитектурного стиля. В качестве архитектурного стиля для нашего клиентского решения был выбран трёхслойный архитектурный стиль. Для компонентов решения были выбраны следующие технологии:
ASP.NET Core – в качестве технологии проектирования серверного приложения.
3.7 Выводы по разделу
В данном разделе были подробно рассмотрены ключевые компоненты для разработки и реализации программного средства мобильного приложения.
Реализация пользовательского приложения производилась при помощи фреймворка Flutter. Был составлен и реализован набор компонентов для отображения, добавления, удаления и взаимодействия различных сущностей. Также была реализована система разграничения доступа к функционалу приложения для различных групп пользователей. Была внедрена валидация введённых данных перед отправкой формы, а также сообщения об ошибке при отправке данных формы на сервер.
Программное средство позволяет создавать заказы, подписки и управлять персоналом. Реализовано наличие двух ролей, пользователя и сотрудника, а также аутентификация и обновление позиции курьера в реальном времени.
4 Руководство пользователя системы и тестирование (анализ безопасности системы)
-
бизнес-уровень.
Это средний слой архитектуры. Этот уровень включает в себя логические вычисления и операции, выполняемые на этом уровне. Он обрабатывает команду, принимает логические решения и выполняет расчеты. Он также выступает в качестве промежуточного программного обеспечения между двумя окруженными слоями, то есть уровнем представления и уровнем данных. Он обрабатывает данные между этими двумя слоями. Этот слой реализует бизнес-логику и вычисления. Этот уровень также проверяет входные условия перед вызовом метода из уровня данных. Это гарантирует правильность ввода данных перед продолжением, а также часто может гарантировать правильность выходных данных. Эта проверка ввода называется бизнес-правилами;
-
уровень данных.
Этот уровень используется для подключения бизнес-уровня к базе данных или источнику данных. Он содержит методы, которые используются для выполнения операций с базой данных, таких как вставка, удаление, обновление и т. д. Этот уровень содержит хранимые процедуры, которые используются для запросов к базе данных. Следовательно, этот уровень устанавливает соединение с базой данных (или с внешней API, будь то REST или GraphQL) и выполняет функции в базе данных.
Разработка приложения ведется на Dart, языке, который используется фреймворком Flutter. В фреймоворке есть механизм для добавления специальных пакетов. Список использованных в разработке пакетов приведен в листинге 2.1.
dependencies: adaptive_scrollbar: ^2.1.2 artemis: ^7.0.0-beta auto_route: ^3.2.3+1 badges: ^2.0.2 bloc: ^8.0.2 cupertino_icons: ^1.0.2 dio: ^4.0.4 dropdown_search: ^2.0.1 equatable: ^2.0.3 flutter: sdk: flutter flutter_bloc: ^8.0.1 flutter_dotenv: ^5.0.2 flutter_form_builder: ^7.1.1 flutter_localizations: sdk: flutter flutter_localized_locales: ^2.0.3 font_awesome_flutter: ^10.0.0 form_builder_extra_fields: ^7.1.0 form_builder_validators: ^8.1.1 freezed: ^1.0.1 get_it: ^7.2.0 gql: null gql_dio_link: 0.1.0 gql_exec: 0.3.0 gql_transform_link: 0.2.0 graphql_flutter: ^5.0.0 hive: ^2.1.0 hive_flutter: null intl: ^0.17.0 json_annotation: ^4.1.0 jwt_decode: ^0.3.1 logger: ^1.1.0 normalize: ^0.5.5 qr_flutter: ^4.0.0 shared_preferences: ^0.5.5 storage_repository: ^1.1.7 dev_dependencies: auto_route_generator: ^3.2.3 build_runner: ^2.1.7 flutter_gen_runner: ^4.1.5 flutter_lints: ^1.0.0 flutter_test: sdk: flutter json_serializable: ^6.0.1 |
Листинг 2.1 – Список используемых пакетов
С помощью Flutter можно создать кроссплатформенное приложение под OS Windows, MacOS, Web, Android и iOS. Для того что бы собрать под MacOS и iOS необходимо наличие самой операционной системы MacOS, с помощью XCode. Необходимость его использования обусловлена тем, что для приложений под эти системы нужны сертификаты, которые генерируются только в XCode.
3.5 Описание основных зависимостей проекта
3.5.1 Пакет Intl
Пакет предоставляет средства интернационализации и локализации, включая перевод сообщений, множественное число и роды, форматирование и разбор даты / номера, а также двунаправленный текст.
Локализуемые сообщения записываются как функции, которые возвращают результат вызова Intl.message. Функция может быть запущена в программе до того, как будет выполнен какой-либо перевод, и просто вернет строку сообщения. Строка также можно извлечь в файл и затем может быть модифицирована так, чтобы она возвращала переведенную версию без изменения исходной программы [4].
3.5.2 Пакет Provider
Зависимость, которая предоставляет ряд возможностей при разработке приложения:
-
упрощенное распределение / распоряжение ресурсами; -
отложенная загрузка; -
значительно уменьшенный шаблон по сравнению с созданием нового класса каждый раз; -
повышенная масштабируемость для классов с механизмом прослушивания, которая экспоненциально растет.
3.5.3 Пакет Auto Route
AutoRoute это пакет для генерации маршрутов, в которой автоматически создается все необходимое для навигации.
В Flutter маршруты используются для перехода между экранами.
Класс Navigator предоставляет возможность навигации по названному маршруту из любой части приложения с использованием общего идентификатора. В некоторых случаях также может понадобиться передать аргументы в именованный маршрут. Например, можно перейти к маршруту /user и передать информацию о пользователе по этому маршруту.
3.5.4 Пакет artemis
Плагин Flutter, который предоставляет возможность сгенерировать код для взаимодействия с GraphQL сервером из доступной схемы.
Плагин использует стандартный механизм Flutter для создания генерированного кода всех запросов, мутаций и объектов доступных внутри GraphQL схемы.
3.5.5 Пакет storage_repository
Зависимость для создания безопасного хранилища и предоставления репозитория в
Flutter, обеспечивающая легкий доступ к определенным платформозависимым службам.
Характерной чертой этой зависимости является то, что данные, которые сохраняются туда персистенты и хранятся между запусками приложения в шифрованном виде.
3.5.6 Пакет flutter_localizations
Стандартный плагин Flutter для предоставления возможностей интернационализации приложения.
Предоставляет инструменты и генерацию кода для всевозможных доступных локалей. Все переводы хранятся в специальных arb файлах.
3.5.7 Пакет hive
Кроссплатформенная библиотека, предоставляющая хранилище по типу «ключ-значение» написанное на чистом Dart.
Одна из транзитивных зависимостей требуемых для storage_repositoryдля того, чтобы он мог работать на мобильной платформе.
3.5.8 Пакет Build Runner
Пакет build_runner предоставляет конкретный способ генерации файлов с использованием кода Dart вне таких инструментов, как pub. В отличие от pub / build, файлы всегда генерируются непосредственно на диске, а перестройки - инкрементные.
3.6 Разработка архитектуры приложения
Для реализации всей функциональности приложения в клиентской части существует лишь одна основная роль. Таким образом, учитывая аутентификацию можно выделить две основные структурные части:
-
аутентификация; -
сотрудник.
По серверной части мы используем IdentityServer для авторизации и клиентов, а HotChocolate для поддержки GraphQL в ASP.NET Core. Таким образом можно выделить такие структурные части как:
-
ASP.NET Core; -
EntityFramework; -
PostgreSQL; -
IdentityServer; -
HotChocolate.
Большинство приложений должны распознавать пользователей. Знание личности пользователя позволяет приложению безопасно сохранять пользовательские данные и предоставлять персонализированный опыт работы на любом устройстве. IdentityServer предоставляет основную работу с авторизацией и OAuth.
Вход в приложение, использующее IdentityServer, можно осуществить либо с помощью FirebaseUI как готовое решение предоставляющее все средства для работы с OAuth, либо ручная интеграция одного или нескольких методов входа в приложение.
Для вышеперечисленных компонентов был проведен поиск и подбор соответствующих инструментов и технологий, а также архитектурного стиля. В качестве архитектурного стиля для нашего клиентского решения был выбран трёхслойный архитектурный стиль. Для компонентов решения были выбраны следующие технологии:
-
Flutter – в качестве технологии проектирования кроссплатформенного приложения;
-
PostgreSQL – в качестве базы данных приложения;
ASP.NET Core – в качестве технологии проектирования серверного приложения.
3.7 Выводы по разделу
В данном разделе были подробно рассмотрены ключевые компоненты для разработки и реализации программного средства мобильного приложения.
Реализация пользовательского приложения производилась при помощи фреймворка Flutter. Был составлен и реализован набор компонентов для отображения, добавления, удаления и взаимодействия различных сущностей. Также была реализована система разграничения доступа к функционалу приложения для различных групп пользователей. Была внедрена валидация введённых данных перед отправкой формы, а также сообщения об ошибке при отправке данных формы на сервер.
Программное средство позволяет создавать заказы, подписки и управлять персоналом. Реализовано наличие двух ролей, пользователя и сотрудника, а также аутентификация и обновление позиции курьера в реальном времени.
4 Руководство пользователя системы и тестирование (анализ безопасности системы)