Файл: Методика защиты информации в системах электронного документооборота (Выбор программных средств разработки).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 25.04.2023

Просмотров: 157

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Рисунок 4.2.4 – Шаблоны приложения document_cards Приложение document_cards содержит следующие шаблоны:

  • document_card – отображение страницы просмотра карты документа;
  • create_document – отображение страницы создания карты документа;
  • edit_document_card – отображение страницы редактирования карты документа.

Шаблон document_card.html представлен в приложении Г.

Одна из сильных сторон Django – это автоматический интерфейс администратора. Он использует мета-данные модели, чтобы предоставить многофункциональный, готовый к использованию интерфейс для работы с содержимым сайта. Для настройки интерфейса администратора было установлено приложение Django-admin-tools, модифицирующее работу стандартной админки. Так же весь проект был настроен на русский язык, в файле settings.py, в моделях и в файле admin.py были созданы специальные классы, для настройки.

Результаты разработки в виде интерфейса пользователя представлены в приложении Г.

ЗАКЛЮЧЕНИЕ

В результате выполнения работы было реализовано веб-приложение для электронного документооборота с повышенным уровнем безопасности.

Таким образом, поставленные задачи работы успешно выполнены, цель достигнута. В дальнейшем планируется осуществление сопровождения системы: взаимодействие с пользователями для консультирования по вопросам эксплуатации системы, сбору требований по модификациям и доработкам системы, а так же реализация соответствующих модификаций и доработок.

В ходе данной работы были выполнены следующие работы:

  1. Изучена предметная область;
  2. Исследованы аналогичные системы;
  3. Разработано техническое задание на создание системы;
  4. Спроектирован пользовательский интерфейс;
  5. Спроектирована архитектура системы;
  6. Спроектирована база данных;
  7. Реализован функционал системы.

На данный момент система находится в стадии эксплуатационного тестирования.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

  1. Двухфакторная аутентификация: что это и зачем оно нужно [Электронный ресурс]/ Kaspersky. Режим доступа: https://www.kaspersky.ru/blog/what_is_two_factor_authenticatio/4272/. Дата обращения: 03.06.18г.
  2. Применение двухэтапной аутентификации для повышения безопасности пользователей информационных систем / Палютина Г. Н. // Фундаментальные и прикладные научные исследования. – 2015. – 91-95 с. Дата обращения: 05.06.18г.
  3. Выбираем решение для персонального файлохранилища [Электронный ресурс]/ xakep.ru. Режим доступа: https://xakep.ru/2014/09/04/personal-cloud-storage-review/. Дата обращения: 07.06.18г.
  4. Nextcloud [Электронный ресурс]/ Национальная библиотека им. Н. Э. Баумана. Режим доступа: https://ru.bmstu.wiki/Nextcloud. Дата обращения: 15.06.18г.
  5. Пять недорогих Open Source-сервисов хранения для предприятий [Электронный ресурс]/ itWeek. Режим доступа: https://www.itweek.ru/foss/article/detail.php?ID=177233. Дата обращения: 04.06.18г.
  6. Поиск облачных сервисов для бизнеса и личной продуктивности, сравнение характеристик и цен [Электронный ресурс]/ Режим доступа: https://startpack.ru/. Дата обращения: 17.06.18г.
  7. А вы защищаете свои аккаунты двухфакторной или двухэтапной аутентификацией? [Электронный ресурс]/ Блог Вадима Стеркина. Режим доступа: http://www.outsidethebox.ms/18372/. Дата обращения: 14.06.18г.
  8. PHP vs Python vs Ruby для разработки веб-приложений: подробное сравнение [Электронный ресурс]/ Режим доступа: https://8d9.ru/php-vs-python-

vs-ruby-dlya-razrabotki-veb-prilozhenij-podrobnoe-sravnenie. Дата обращения: 15.06.18г.

  1. Programming python / Lutz M. – O'Reilly, 1996. – Т. 8. Дата обращения: 12.06.18г.
  2. SQLite vs MySQL vs PostgreSQL: сравнение систем управления базами данных [Электронный ресурс]/ Режим доступа: http://devacademy.ru/posts/sqlite-vs-mysql-vs-postgresql/. Дата обращения: 03.06.18г.
  3. Beginning Databases with PostgreSQL / Matthew N., Stones R. – Apress, 2005. Дата обращения: 12.06.18г.
  4. PostgreSQL [Электронный ресурс]/ Википедия – свободная энциклопедия. Режим доступа: https://ru.wikipedia.org/wiki/PostgreSQL. Дата обращения: 15.06.18г.
  5. PostgreSQL: introduction and concepts / Momjian B. – New York : Addison-Wesley, 2001. – Т. 192. Дата обращения: 17.06.18г.
  6. Django – фреймворк на Python [Электронный ресурс]/ Web creator. Режим доступа: https://web-creator.ru/articles/django. Дата обращения: 09.06.18г.
  7. Python web development with Django / Forcier J., Bissex P., Chun W. J.

– Addison-Wesley Professional, 2008. Дата обращения: 05.06.18г.

  1. Базы данных в Python [Электронный ресурс]/ Сообщество программистов Python. Режим доступа: https://python-scripts.com/database. Дата обращения: 14.06.18г.
  2. Часть 4. Python/Django и Hello World. Структура проекта Django и создание приложений [Электронный ресурс]/ Blog WebSofter, Режим доступа: http://blog.websofter.ru/chast-4-pythondjango-i-hello-world-structura-django-i- sozdanie-prilogheniy/ Дата обращения: 12.06.18г.
  3. Создаѐм своѐ первое приложение с Django, часть 1 [Электронный ресурс]/ Документация Django 1.9, Режим доступа: https://djbook.ru/rel1.9/intro/tutorial01.html. Дата обращения: 15.06.18г.

ПРИЛОЖЕНИЕ А

Требования к интерфейсу пользователя

Рисунок А.1 – Эскиз начальной страницы

Рисунок А.2 – Эскиз страницы ввода кода

Рисунок А.3 – Эскиз окна с ошибкой

Рисунок А.4 – Окно с сообщением о неработоспособности кода

Рисунок А.5 – Эскиз меню пользователя

Рисунок А.6 – Эскиз страницы смены пароля

Рисунок А.7 – Эскиз страницы просмотра категории

Рисунок А.8 – Эскиз страницы просмотра карты документа

Рисунок А.9 – Эскиз страницы создания категории

Рисунок А.10 – Эскиз страницы создания карты документа


Рисунок А.11 – Эскиз страницы редактирования категории

Рисунок А.12 – Эскиз страницы редактирования карты документа

ПРИЛОЖЕНИЕ Б

Схема базы данных

ПРИЛОЖЕНИЕ В

Примеры шаблонов

Шаблон menu.html:

{% extends 'bootstrap3.html' %}

{% load bootstrap3 %}

{% load staticfiles %}

{% load mptt_tags %}

{% block menu %}

<link href={% static "categories/style.css" %} rel="stylesheet">

<div class="navbar navbar-inverse navbar-fixed-top" role="navigation">

<div class="container-fluid">

<div class="navbar-header">

<button type="button" class="navbar-toggle" data-toggle="collapse" data- target=".navbar-collapse">

<span class="sr-only">Toggle navigation</span>

<span class="icon-bar"></span>

<span class="icon-bar"></span>

<span class="icon-bar"></span>

</button>

<a class="navbar-brand" href="/main">Личный кабинет</a>

</div>

<div class="navbar-collapse collapse">

<ul class="nav navbar-nav navbar-right">

<li class="dropdown">

<a href="#" class="dropdown-toggle" data-toggle="dropdown">Здравствуйте, {{ user.last_name}} {{user.first_name }}<b class="caret"></b></a>

<ul class="dropdown-menu">

<li><a href="/change_password">Сменить пароль</a></li>

<li><a href="/logout">Выйти</a></li>

</ul>

</li>

</ul>

</div>

</div>

</div>

<div class="container-fluid">

<div class="row">

<div class="col-xs-12 col-sm-3 col-md-2 sidebar">

<div id="jquery-accordion-menu" class="jquery-accordion-menu black menu">

<ul>

{% recursetree categories %}

<li><span><a href="/categories/{{ node.category_id }}"><i class="fa fa- folder"></i>{{ node.name }}</a></span>

{% if not node.is_leaf_node %}

<ul>

{{ children }}

{% if node.docs %}

{% for docs in node.docs.all %}

{% if docs.delete == False %}

<li><span><a href="/document_cards/{{ docs.document_card_id

}}"><i class="fa fa-file-o"></i>{{ docs.name }}</a></span></li>

{% endif %}

{% endfor %}

{% endif %}

</ul>

{% elif node.is_leaf_node %}

{% for docs in node.docs.all %}

<ul>

{% for docs in node.docs.all %}

{% if docs.delete == False %}

<li><span><a href="/document_cards/{{ docs.document_card_id

}}"><i class="fa fa-file-o"></i>{{ docs.name }}</a></span></li>

{% endif %}

{% endfor %}

</ul>

{% endfor %}

{% endif %}

</li>

{% endrecursetree %}

</ul>

</div>

</div>

<div class="col-xs-12 col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main">

{% block info %}

<div class="table-responsive .bs-docs-sidebar ">

<table class="table nav">

<thead>

<tr>

<th>Название</th>

<th>Комментарий</th>

<th>Дата создания</th>

</tr>

</thead>

<tbody>

{% for parent in parents %}

<tr>

<td>

<div class="bs-docs-sidebar hidden-print">

<ul class="nav bs-docs-sidenav">

<li><a href="/categories/{{ parent.category_id }}"><span class="glyphicon glyphicon-folder-close"></span> {{ parent.name }}</a></li>


</ul>

</div>

</td>

<td>

<div class="bs-docs-sidebar hidden-print">

<ul class="nav bs-docs-sidenav">

<li><a>{{ parent.comment }}</a></li>

</ul>

</div>

</td>

<td>

<div class="bs-docs-sidebar hidden-print">

<ul class="nav bs-docs-sidenav">

{% for d in date %}

{% if d.category_id == parent.category_id %}

<li><a>{{ d.date }}</a></li>

{% endif %}

{% endfor %}

</ul>

</div>

</td>

</tr>

{% endfor %}

</tbody>

</table>

</div>

{% endblock %}

</div>

</div>

</div>

<script type="text/javascript" src="{% static 'categories/jquery.js' %}">

{% endblock %}

Шаблон document_card.html:

{% extends 'menu.html' %}

{% load bootstrap3 %}

{% bootstrap_pagination comment %}

{% load staticfiles %}

{% load mptt_tags %}

{% block info %}

<link href={% static "document_cards/style.css" %} rel="stylesheet">

<h1 class="page-header">{{ this.name }}</h1>

{% if this.comment %}

<div class="form-group">

<h4 class="page-header1">Комментарий</h4>

{{ this.comment }}

</div>

{% endif %}

<div class="form-group">

<h4 class="page-header1">Ссылка</h4>

{% if ext == '.doc' or ext == '.docx' %}

<i class="fa fa-file-word-o"></i>

{% elif ext == '.xls' or ext == '.xlsx' %}

<i class="fa fa-file-excel-o"></i>

{% elif ext == '.ppt' or ext == '.pptx' %}

<i class="fa fa-file-powerpoint-o"></i>

{% elif ext == '.mp3' or ext == '.flac' or ext == '.ape' or ext == '.ogg' or ext == '.waw' or ext == '.ac3' or ext == '.wma' or ext == '.m4a' or ext == '.aac' %}

<i class="fa fa-file-audio-o"></i>

{% elif ext == '.bmp' or ext == '.jpg' or ext == '.jpeg' or ext == '.png' or ext == '.gif' or ext == '.tiff' or ext == '.ico' or ext == '.raw' %}

<i class="fa fa-file-image-o"></i>

{% elif ext == '.avi' or ext == '.wmw' or ext == '.mkv' or ext == '.3gp' or ext == '.flv' or ext == '.mpeg' or ext == '.mp4' or ext == '.mov' or ext == '.vob' %}

<i class="fa fa-file-video-o"></i>

{% elif ext == '.rar' or ext == '.zip' or ext == '.7z' or ext == '.tar' or ext == '.gzip' or ext == '.gz' or ext == '.jar' %}

<i class="fa fa-file-archive-o"></i>

{% elif ext == '.pdf' %}

<i class="fa fa-file-pdf-o"></i>

{% elif ext == '.exe' %}

<i class="fa fa-file-code-o"></i>

{% else %}

<i class="fa fa-file"></i>

{% endif %}

<a href="{{ this.file.url }}" class="href">{{ doc_name }}</a>

</div>

<div class="form-group">

<h4 class="page-header1">Дата создания</h4>

{% for date in date %}

{% if date.document_card_id == this.document_card_id %}

{{ date.date }}

{% endif %}

{% endfor %}

</div>

<div class="text-right mrg-top-30">

<a class="btn btn-default" href="/document_cards/{{ this.document_card_id

}}/edit_document_card" role="button">Редактировать</a>

<a class="btn btn-default" href="/document_cards/{{ this.document_card_id

}}/delete_document_card" role="button">Удалить</a>

</div>

<div class="form-group form-comment" role="tabpanel" >

<ul class="nav nav-tabs" id="myTab" role="tablist">

<li class="nav-item active">

<a class="nav-link active" id="home-tab" data-toggle="tab" href="#home" role="tab" aria-controls="home" aria-expanded="true">Комментарии ({{ posts.count }})</a>

</li>

<li class="nav-item">

<a class="nav-link" id="profile-tab" data-toggle="tab" href="#profile" role="tab" aria- controls="profile">История</a>


</li>

</ul>

<div class="tab-content" id="myTabContent">

<div class="tab-pane fade in active" role="tabpanel" id="home" aria-labelledby="home-

tab">

{% if posts.count == 0%} Комментариев нет

<hr>

{% else %}

<div class="comments">

<ul class="media-list">

{% for comment in comment %}

<li class="media">

}}</div>

<div class="media-body">

<div class="media-heading">

{% for user in users %}

{% if comment.user_id == user.id %}

<div class="author">{{ user.last_name}} {{user.first_name

{% endif %}

{% endfor %}

<div class="metadata">

<span class="date">{{ comment.published }}</span>

</div>

</div>

<div class="media-text text-justify">{{ comment.message }}</div>

<hr>

</div>

</li>

{% endfor %}

</ul>

</div>

<div class="pagination">

<span class="step-links">

{% if comment.has_previous %}

<a href="?page={{ comment.previous_page_number }}"><span

class="glyphicon glyphicon-chevron-left"></span></a>

{% endif %}

<span class="current">

Страница {{ comment.number }} из {{ comment.paginator.num_pages }}

</span>

{% if comment.has_next %}

<a href="?page={{ comment.next_page_number }}"><span class="glyphicon glyphicon-chevron-right"></span></a>

{% endif %}

</span>

</div>

{% endif %}

<div class="comment">

<h4 class="title-comments">Добавить комментарий</h4>

<form class="form_comment" action="/main/document_card/{{ this.document_card_id }}/addpost" method="post">

{% csrf_token %}

<div class="form-group">

<textarea name="message" class="form-control" placeholder="Текст комментария" rows="4"></textarea>

</div>

<button class="btn btn-default" type="submit">Отправить</button>

</form>

</div>

</div>

<div class="tab-pane fade" id="profile" role="tabpanel" aria-labelledby="profile-tab">

<div class="comments">

<ul class="media-list">

{% for history in history %}

<li class="media">

<div class="media-body">

<div class="media-heading">

{% for user in users %}

{% if history.user_id == user.id %}

<div class="author">{{ user.last_name}} {{user.first_name }}</div>

{% endif %}

{% endfor %}

<div class="metadata">

<span class="date">{{ history.date }}</span>

</div>

</div>

<div class="media-text text-justify">

{% if history.action_id == 1 %}

Пользователь создал документ: Название: {{ history.name }}, Комментарий: {{ history.comment }}, Файл: {{ history.file }}

{% elif history.action_id == 2 %}

Пользователь отредактировал документ: Название: {{ history.name

}}, Комментарий: {{ history.comment }}, Файл: {{ history.file }}

{% elif history.action_id == 4 %}

Пользователь скачал документ {{ history.file }}

{% endif %}

</div>

<hr>

</div>

</li>

{% endfor %}

</ul>

</div>

</div>

</div>

</div>

<script type="text/javascript" src="{% static 'document_cards/jquery.js' %}">

{% endblock %}

ПРИЛОЖЕНИЕ Г

Разработанный интерфейс

На рисунках Г.1 – Г.16 представлены интерфейсы всех страниц системы в браузере Google Chrome.

Рисунок Г.1 – Страница ввода логина и пароля