Из вышесказанного следует, что пользователям необходим сайт художественной галереи, который позволяет не только ознакомиться с действующими выставками и постоянными картинами на экспозиции, но и оценить понравившиеся картины. Будет преимуществом, если пользователь сможет просмотреть оцененные картины в личном кабинете, получить рекомендацию к посещению определенной выставки и приобрести на нее билет. Такое приложение облегчит пользователю выбор выставки и покупки билета, а также позволит сотрудникам галереи управлять контентом сайта и обновлять актуальную информацию.
На большинстве сайтов хранятся персональные данные пользователя, поэтому не маловажным пунктом является обеспечение безопасности приложения. Согласно исследованию [2], за 2020 год были скомпрометированы около 100 миллионов записей персональных и платежных данных пользователей. Следовательно, реализованная система должна обеспечивать безопасное хранение и передачу данных, а также предотвращать различные атаки.
Целью данной выпускной квалификационной работы является создание защищенного Web-приложения с возможностью покупки билета на выставку и предложений услуг для пользователя на основе его предпочтений.
В процессе анализа предметной области, для реализации данного Web- приложения были поставлены следующие задачи:
– анализ Web-приложений художественных галерей,
– разработка схемы и дизайна приложения,
– реализация страниц выставки и каталога картин,
– реализация личного кабинета и возможности оценки картин,
– реализация разделения доступа для разных групп пользователей,
– тестирование адаптивности для разных устройств,
– обеспечение безопасного хранения и передачи данных.
ВВЕДЕНИЕ..................................................................................................... 4
1. Анализ предметной области..................................................................... 6
1.1. Требования к информационной системе............................................ 6
1.2. Анализ существующих систем............................................................ 7
2. Архитектура.............................................................................................. 9
2.1. Клиент-серверная технология............................................................. 9
2.2. Протокол передачи данных.............................................................. 11
2.3. Инструменты разработки серверной части..................................... 12
2.3.1. Фреймворк Django....................................................................... 12
2.3.2. Система управления базы данных (СУБД)................................ 13
2.3.3. Миграция базы данных............................................................... 14
2.4. Инструменты разработки клиентской части.................................... 15
2.4.1. HTML и SCSS.............................................................................. 15
2.4.2. React.js.......................................................................................... 16
2.4.3. Redux............................................................................................ 17
2.4.4. Одностраничное приложение..................................................... 17
3. Программная реализация....................................................................... 19
3.1. Создание структуры базы данных................................................... 19
3.2. Главная страница.............................................................................. 20
3.3. Страница картин............................................................................... 21
3.4. Страница выставок............................................................................ 22
3.5. Страница управления контентом...................................................... 23
3.6. Личный кабинет пользователя.......................................................... 24
3.7. Корзина.............................................................................................. 26
3.8. Личный кабинет сотрудника............................................................. 27
3.9. Регистрация и авторизация............................................................... 28
4. Тестирование........................................................................................... 29
5. Безопасность системы.............................................................................. 31
5.1. Хеширование паролей...................................................................... 31
5.2. Авторизация пользователя с помощью токена................................ 32
5.3. Защита от SQL-инъекций.................................................................. 34
5.4. Защита от XSS атаки......................................................................... 35
5.5. Защита подлинности билета............................................................. 35
ЗАКЛЮЧЕНИЕ............................................................................................. 37
СПИСОК ЛИТЕРАТУРЫ............................................................................. 42
ПРИЛОЖЕНИЕ............................................................................................. 44
1) Список стран по числу пользователей сети Интернет // Wikipedia: [сайт]. – 2020. – URL: https://ru.wikipedia.org/wiki/Список_стран_по_числу_пользователей_Интерне та (дата обращения 15.03.2021).
2) Объем «утечек» персональных данных россиян в 2020 году // Ведомости: [сайт]. – 2021. – URL: https://www.vedomosti.ru/technology/news/2021/01/11/853607-eksperti-otsenili- obem-utechek-personalnih-dannih-rossiyan-v-2020-godu (дата обращения 12.03.2021).
3) Двухуровневая и трехуровневая структура «клиент-сервер» // StudRof: [сайт]. – 2020. – URL: https://studref.com/364985/buhgalterskiy_uchet_i_audit/dvuhurovnevaya_trehurov nevaya_struktury_klient_server_funktsii_rabochih_stantsiy_serverov_zavisimosti_ str (дата обращения 19.03.2021).
4) Что такое MVC: рассказываем простыми словами // Хекслет [сайт]. – 2019. – URL: https://ru.hexlet.io/blog/posts/chto-takoe-mvc- rasskazyvaem-prostymi-slovami (дата обращения 20.03.2021).
5) Обзор протокола HTTPS // MDN Web Docs: [сайт]. – 2018. – URL: https://developer.mozilla.org/ru/docs/Web/HTTP/Overview (дата обращения 22.03.2021).
6) Official site of Django framework // Django : [сайт]. – 2020. – URL: https://www.djangoproject.com/ (дата обращения 10.03.2021).
7) SQLite // SQLite : [сайт]. – 2020. – URL://www.sqlite.org/index.html (дата обращения 11.03.2021).
8) Базы данных. Тенденции общемировые и в России // Habr : [сайт].
– 2020. – URL: https://habr.com/ru/post/533880/ (дата обращения 14.03.2021).
9) SQLite testing coverage // SQLite : [сайт]. – 2020. – URL: https://sqlite.org/testing.html#coverage (дата обращения 11.03.2021).
10) Migrations // Django : [сайт]. – 2020. – URL: https://docs.djangoproject.com/en/3.2/topics/migrations/ (дата обращения 15.03.2021).
11) React component // React : [сайт]. – 2020. – URL: https://ru.reactjs.org/docs/react-component.html (дата обращения 21.03.2021).
12) Мардан А. React быстро. Веб-приложения на React, JSX, Redux и GraphQL [текст] : печатная книга – Питер, 2019. – 560 с.
13) ЮMoney // ЮMoney : [сайт]. – 2020. – URL: https://yoomoney.ru/get (дата обращения 20.04.2021).
14) SMTP server // Unisender : [сайт]. – 2020. – URL: https://www.unisender.com/ru/support/about/glossary/chto-takoe-smtp/ (дата обращения 15.04.2021).
15) ГОСТ Р 50922-2006 Защита информации. Основные термины и определения [текст]. – Москва. 2008. – 12 с.
16) Recommendation for password-based key derivation // NIST : [сайт].
– 2010. – URL:
https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-132.pdf (дата обращения 15.04.2021).
17) Внедрение SQL инъекций // Djbook : [сайт] – 2020. – URL: https://djbook.ru/ch19s02.html (Дата обращения 17.05.2020). - Текст: электронный.
18) Межсайтовый скриптинг (XSS) // Djbook : [сайт] - 2020. – URL: https://djbook.ru/ch19s03.html (Дата обращения 21.05.2020). - Текст: электронный.