close

Вход

Забыли?

вход по аккаунту

?

ДИПЛОМ

код для вставкиСкачать
РЕФЕРАТ
Ключевые слова: Internet, Web-сайт, PHP-скрипт, система контроля и
управления версиями, Subversion.
Объектом исследования являются Web-сайты, атаки на них и способы
восстановления поврежденных PHP-скриптов.
Цель работы – разработка системы автоматического восстановления
сайта на основе использования Subversion при несанкционированном
изменении PHP-скриптов.
В результате выполнения дипломного проекта была разработана
система автоматического восстановления сайта при несанкционированном
изменении PHP-скриптов.
Система доведена до практической реализации, является гибкой и
настраиваемой для пользователя.
Разработанный
программный
модуль
автоматизирует
процедуру
восстановления сайта, повреждённого в результате различного рода атак.
4
СОДЕРЖАНИЕ
ОПРЕДЕЛЕНИЯ ................................................................................................................7
ВВЕДЕНИЕ ........................................................................................................................9
1
АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ И РАЗРАБОТКА ТЕХНИЧЕСКОГО
ЗАДАНИЯ ........................................................................................................................12
1.1
Основные понятия и их определения ..................................................................12
1.2
Программные средства для создания web-сайтов ..............................................13
1.3
Классификация атак на Web-сайты и возможные способы защиты ................20
1.4
Обзор существующих систем контроля и управления версиями .....................26
1.5
Выводы ...................................................................................................................30
1.6
Постановка задачи на дипломное проектирование ............................................30
2
ПРОЕКТИРОВАНИЕ
СИСТЕМЫ
АВТОМАТИЧЕСКОГО
ВОССТАНОВЛЕНИЯ РАБОТОСПОСОБНОСТИ WEB-САЙТА .............................31
2.1
Место решаемой задачи в комплексной проблеме ............................................31
2.2
Решение проблемы восстановления файлов Web-сайта путем резервного
копирования .....................................................................................................................39
Решение проблемы восстановления файлов Web-сайта путем использования
2.3
Subversion .........................................................................................................................42
2.3.1
Преимущества Subversion по сравнению с другими СКВ .............................42
2.3.2
Схема работы с репозиторием на примере SVN .............................................46
2.3.3
Преимущества использования SVN для управления Web-сайтом ...............49
2.3.4
Недостатки при использовании SVN для управления сайтом ......................52
2.3.5
Определение способа для обнаружения повреждения файлов .....................55
2.4
Алгоритм автоматического восстановления работоспособности сайта ..........58
2.5
Выводы ...................................................................................................................61
3
РЕАЛИЗАЦИЯ РАЗРАБОТАННОГО АЛГОРИТМА ...........................................62
3.1
Выбор средства для реализации ...........................................................................62
3.2
Хеширование в PHP ..............................................................................................66
3.3
Описание используемого класса phpsvnclient ....................................................68
3.4
Используемые возможности PHP для реализации алгоритма ..........................68
3.5
Реализация алгоритма автоматического восстановления работоспособности
сайта 70
5
3.6
Выводы ...................................................................................................................78
4 ЭКОНОМИЧЕСКОЕ ОБОСНОВАНИЕ ДИПЛОМНОГО ПРОЕКТА ....................79
2.1
Концепция экономического обоснования дипломного проекта .......................79
2.2
Трудоемкость и календарный план .....................................................................81
2.3
Определение стоимости разработки системы ....................................................88
2.4
Комплексная оценка эффективности проведенной работы ..............................92
2.5
Выводы ...................................................................................................................93
5
ОХРАНА ИНТЕЛЛЕКТУАЛЬНОЙ СОБСТВЕННОСТИ ....................................94
5.1
Введение .................................................................................................................94
5.2
Общие положения .................................................................................................94
5.3
Перечень основных документов ..........................................................................98
5.4
Выводы .................................................................................................................107
6
ЗАКЛЮЧЕНИЕ .......................................................................................................108
7 СПИСОК ЛИТЕРАТУРЫ ..........................................................................................110
ПРИЛОЖЕНИЕ А ..........................................................................................................111
ПРИЛОЖЕНИЕ Б ..........................................................................................................113
6
ОПРЕДЕЛЕНИЯ
Интернет - всемирная система объединённых компьютерных сетей,
построенная
на
использовании
семейства
протоколов
ТCP/IP
и
маршрутизации пакетов данных. WWW-сервис (World Wide Web - всемирная
паутина)
это
-
гипертекстовая,
гипермедийная,
распределенная,
интегрирующая, глобальная информационно-поисковая система в Интернет.
Web-сайт - это информация (представленная в определенном виде),
которая располагается на web-сервере и имеет свое уникальное имя (адрес) в
Интернет. Web-сайт представляет собой некоторый набор текстовой и
графической информации, организованный в виде определенного количества
web-страниц, связанных между собой гипертекстовыми ссылками.
Клиент-сервер — вычислительная или сетевая архитектура, в которой
задания или сетевая нагрузка распределены между поставщиками услуг
(сервисов), называемых серверами, и заказчиками услуг, называемых
клиентами.
Нередко
компьютерную
сеть
клиенты
и
могут
и
серверы
быть
как
взаимодействуют
различными
через
физическими
устройствами, так и программным обеспеченем. Программный код,
обеспечивающий интерактивность web-страниц, называется сценарием
(скриптом).
Хэш-функция – криптографическая функция, аргументом которой
являются
произвольные
сообщения,
представленные
в
виде
последовательности битов, и значения которой лежат в области от
2 1,
m
где
m
0
до
- размер выходного значения хэш-функции.
Алгоритм
–
совокупность
операций,
выполняемых
в
строго
установленном порядке, для решения поставленной задачи.
Информация - сведения (сообщения, данные) независимо от формы их
представления [2];
7
Доступ к информации - ознакомление с информацией, ее обработка, в
частности, копирование, модификация или уничтожение информации [3].
Правила разграничения доступа ПРД - совокупность правил,
регламентирующих права доступа субъектов доступа к объектам доступа [3].
Несанкционированный доступ к информации НСД - доступ к
информации, нарушающий правила разграничения доступа с использованием
штатных средств, предоставляемых средствами вычислительной техники или
автоматизированными системами [3].
Защита от несанкционированного доступа - предотвращение или
существенное затруднение несанкционированного доступа [3].
Идентификация - присвоение субъектам и объектам доступа
идентификатора и (или) сравнение предъявляемого идентификатора с
перечнем присвоенных идентификаторов [3].
Аутентификация - проверка принадлежности субъекту доступа
предъявленного им идентификатора, подтверждение подлинности [3].
Целостность информации - способность средства вычислительной
техники или автоматизированной системы обеспечивать неизменность
информации в условиях случайного и (или) преднамеренного искажения
(разрушения) [3].
Угроза - это потенциально возможное событие, действие, процесс или
явление, которое может привести к понятию ущерба чьим-либо интересам.
Атака на компьютерную систему - это действие, предпринимаемое
злоумышленником, которое заключается в поиске и использовании той или
иной уязвимости. Таким образом, атака - это реализация угрозы.
8
ВВЕДЕНИЕ
С проблемой безопасности и защиты сайты своего сайта рано или
поздно сталкивается владелец любого web-ресурса, а с течением времени,
учитывая
тенденцию
переноса
локальных
приложений
в
web-среду
актуальность защиты online-приложений будет только возрастать.
Проблема обеспечения безопасности сайтов актуальна как для
крупных популярных, так и для небольших и не очень посещаемых
приложений. В настоящее время наибольшую опасность представляют:
«троянские
программы»,
поражающие
Web-сайты;
программы,
занимающиеся автоматической рассылкой спама с Web -сайтов; софт,
работающий практически «без участия человека». Подобные программы
могут нанести ущерб любому плохо защищенному ресурсу. В результате
атаки может произойти потеря или нарушение содержимого выполняемых
сценариев сайта на сервере. Если поврежденные данные существуют в
единственном экземпляре – прямо на сервере, то разработчикам придется
заново переписывать сайт. При этом работу сайта придется приостановить на
время, требующееся разработчикам для восстановления. Как следствие этого
– потеря доверия клиентов к данному Web-сайту, прямые убытки для
бизнеса, потеря рабочего времени для исправления ошибок.
Для
предотвращения
использовать
разрабатывается
встроенные
сценарий,
всего
вышеперечисленного
средства
защиты
шифрование,
а
языка,
также
необходимо
на
средства
котором
защиты
операционной системы и сервера. Всегда остается вероятность наличия
уязвимости в системе защиты сайта. Спасти сайт в этом случае, сохранить
данные или хотя бы основную часть из них, поможет резервное копирование.
Для решения проблемы обеспечения безопасности функционирующего
сайта в данном дипломном проекте предлагается
использовать систему
контроля версий Subversion. Subversion позволяет хранить изменения,
9
произведенные над группой файлов, а также упростить процедуру резервного
копирования. Все исполняемые файлы проекта предполагается хранить в
репозитории Subversion. Для выполняемых сценариев сайта это означает, что
всегда будет иметься их резервная копия.
Дипломный
восстановления
проект
«Разработка
работоспособности
сайта
системы
на
основе
автоматического
использования
Subversion при несанкционированном изменении PHP-скриптов» имеет
следующую структуру.
Первая глава посвящена изучению понятия Web-сайта и атак на него.
Рассмотрены общие сведения, связанные с этим понятием, а так же
классификация возможных угроз. Далее в главе рассмотрены общие
сведения, связанные с восстановлением поврежденных файлов Web-сайта с
помощью системы контроля версий. В конце главы дана постановка задачи
на дипломное проектирование.
Во второй главе рассмотрено место решаемой задачи восстановления
поврежденных файлов к комплексной проблеме. Рассмотрены основные
методы решения поставленной задачи и их недостатки. Рассмотрены
преимущества использования систем контроля версия для работы с Webсайтом,
а
также
проведен
выбор
наиболее
оптимальной
системы,
рассмотрена схема работы с ней, показаны имеющиеся недостатки.
Рассмотрены возможные средства для обнаружения поврежденных файлов и
разработан алгоритм автоматического восстановления поврежденных файлов
Web-сайтов.
В третьей главе обоснован выбор наиболее оптимального языка для
реализации, рассмотрены возможности PHP для реализации разработанного
алгоритма. Описана реализация алгоритма на языке PHP, рассмотрены
функции отдельных файлов разработанного модуля.
В четвертой главе было произведено экономическое обоснование
дипломного проекта, в ходе которого был составлен перечень основных
10
этапов и видов работ, определена их трудоемкость, рассчитаны затраты на
проведение
дипломного
проекта
и
дана
комплексная
оценка
ее
эффективности.
В пятой главе рассмотрены вопросы защиты интеллектуальной
собственности.
Целью
дипломного
проекта
является
разработка
системы
автоматического восстановления сайта на основе использования Subversion
при несанкционированном изменении PHP-скриптов.
11
1 АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ И РАЗРАБОТКА
ТЕХНИЧЕСКОГО ЗАДАНИЯ
1.1
Основные понятия и их определения
Для просмотра web-сайта используются программы браузеры
(программа-просмотрщик). Сегодня в мире существует не менее десятка
различных браузеров. К наиболее распространенным относятся Internet
Explorer (компания Microsoft), Netscape Navigator (компания Netscape/AOL),
Opera (компания Opera Software) и Mozilla. Все браузеры имеют свои
достоинства и недостатки, которые складываются из скорости работы,
способности открывать те или иные приложения, соответствие требованиям
безопасности при работе в Сети.
Для создания динамичных, интерактивных страниц, включающих в
себя массу нестандартных возможностей, необходимо знать современные
технологии web-программирования.
Программный код, обеспечивающий интерактивность web-страниц,
называется сценарием (скриптом).
Все технологии web-программирования можно разделить на две
основные группы: программирование на стороне клиента и на стороне
сервера.
Сценарии на стороне клиента выполняются под управлением
браузера, не обращаясь к серверу. Чаще всего они создаются на языках
JavaScript и VBScript.
Сценарии на стороне сервера располагаются и выполняются под
управлением Web-сервера. Для их написания обычно используются такие
технологии, как Perl, ASP, ColdFusion, PHP, JSP и SSI.
Существует
множество
программных
редактирования web-страниц сайта.
12
средств
для
создания
и
На сегодняшний день разработано большое число web-редакторов,
которые можно разбить на три группы.
1) Свободно распространяемые (бесплатные). В основном это
невизуальные html-редакторы, разработанные небольшой группой авторов.
Визуальные редакторы этой группы имеют ограниченный набор средств
визуального
редактирования.
Характеризуются
небольшим
объемом
занимаемой памяти, а некоторые из них даже не требуют специальной
установки.
2)
Условно-бесплатные.
Web-редакторы
этой
группы
характеризуются невысокой ценой.
3) Платные. В эту группу входят невизуальные и визуальные
редакторы, разработанные крупными фирмами. Отвечают всем требованиям,
предъявляемым к современным web-редакторам. Накладывают определенные
ограничения на ресурсы компьютера. Обычно имеются демо-версии
продукта, которые можно установить бесплатно и работать с ними
ограниченное время (30 дней).
1.2
Программные средства для создания web-сайтов
Языки и средства разметки
HTML, Hyper Text Markup Language (язык разметки гипертекста) —
базовая технология интернета. HTML - стандартный язык разметки
документов во Всемирной паутине. Большинство web-страницы создаются
при помощи языка HTML (или XHTML). Язык HTML интерпретируется
браузером и отображается в виде документа, в удобной для человека форме.
13
При помощи HTML можно создавать отдельные элементы, а в
дальнейшем компоновать их между собой. HTML позволяет формировать
текстовые блоки, форматировать их, выделяя абзацы, организовывать и
создавать любые таблицы и списки. Есть возможность управлять цветовым
оформлением документов, добавлять на сайт звуки, анимацию, картинки.
HTML, естественно, помогает организовывать связь документов, разделов и
страниц сайта между собой посредством гиперссылок.
Главный недостаток HTML — отсутствие средств, при помощи
которых было бы возможно контролировать просмотр web-страниц
независимо от пользователя. Web-мастер подготавливает страницу под
какие-то определенные параметры, разрешение монитора, вид браузера и т.д.
Пользователь же, изменив эти параметры у себя на компьютере, может
получить на выходе страницу, существенно отличающуюся от замыслов
программиста.
XML (eXtensible Markup Language, расширяемый язык разметки) - язык
структурной разметки текстовой информации. XML предназначен для
хранения структурированных данных (взамен существующих файлов баз
данных), для обмена информацией между программами, а также для
создания на его основе более специализированных языков разметки
(например, XHTML), иногда называемых словарями. XML является
упрощённым подмножеством языка SGML.
Главное преимущество XML заключается в том, что язык этот можно
дописывать
и
расширять,
добавляя
новые
тэги,
создавая
свои
пользовательские XML-словари. По мнению аналитиков, XML постепенно
должен стать основным стандартом во всемирной сети, включив в себя
большинство других использующихся ныне форматов.
CSS. Технология CSS (Cascading Style Sheets, каскадные таблицы
стилей)
позволяет
с
помощью
специального
макроязыка
задать
форматирование страницы. В файле CSS мы можем задать параметры для
14
всех тегов HTML по отдельности, а также для группы тегов, создать некий
шаблон, данные которого будут в дальнейшем влиять на все элементы
страницы.
Стили можно задать не только для одной конкретной страницы, но и
для всего сайта в целом. Также технологию CSS можно использовать
практически на любом сервере без каких-либо ограничений.
DHTML (Dynamic Hyper Text Markup Language) - это способ создания
интерактивного веб-сайта, использующий сочетание статичного языка
разметки HTML, встраиваемого (и выполняемого на стороне клиента)
скриптового языка JavaScript и CSS (каскадных таблиц стилей).
DHTML базируется на объектной модели документа DOM (Document
Object Model), технология эта встроена во все виды браузеров и помогает
осуществить доступ к любому отдельно взятому элементу web-страницы
(который в дальнейшем можно видоизменить). Технология DHTML
позволяет нам осуществлять программное управление всеми тегами и
атрибутами и создавать сложные пользовательские интерфейсы. DHTML
позволит программисту спроектировать такие интерактивные элементы, как
движущийся фон, расположенный под статичным текстовым содержимым
страницы, любые сложные объекты, выпадающие меню, мигающие при
наведении курсора кнопки, анимацию, титры и многое другое.
1.2.2 Языки программирования
Все описываемые языки программирования относятся к числу
объектно-ориентированных.
Из них Perl, РНР, Python, JAVA — языки, исполняющиеся на сервере
(серверные языки). JavaScript — язык, исполняющийся на браузере
(клиентский). Компьютер, открывающий доступ к собственным ресурсам,
носит название сервера, а получающий такой доступ — клиент.
15
Perl (Practical Extrifiction and Report Language, практический язык
выборки и составления отчетов) оптимизирован для обработки большого
количества текстовых файлов. Язык Perl способен обрабатывать огромное
количество документов на web-узле (сервере), многие серверы написаны как
раз на языке Perl.
Web-мастеру Perl поможет проверить верность перекрестных ссылок на
сайтах, осуществит проверку заполнения элементов формы, позволит
присоединять базы данных с последующей их обработкой. Perl может
работать и с протоколом FTP. Это позволяет автоматизировать получение
файлов с других серверов, а в сочетании с возможностями языка по
обработке текстовых файлов дает web-мастеру возможность создавать
сложные информационные системы.
PHP. Язык программирования PHP создавался специально для сети.
PHP лучше всего охарактеризовать так: программист пишет сценарии — код,
сервер, получая готовые указания, обрабатывает информацию и выводит
результат на монитор пользователя.
PHP помогает создавать динамические web-приложения, такие как
форумы, счетчики статистики, может работать с большими объемами данных
— массивами. Очень хорошо язык PHP подходит для написания систем
управления сайтами «движков».
Для того чтобы сайт быстрее загружался, стоит разбить страницу на
отдельные элементы. Язык программирования PHP позволяет «на лету», за
считанные доли секунды, объединять отдельные составляющие в цельную
web-страницу.
Основное достоинство языка PHP — простота изучения. Он будет
интуитивно понятен программистам, обладающим навыками в таких языках,
как Perl и C, и для новичка вполне доступен.
В PHP нет поддержки ссылок на переменные, из-за чего сложно
обрабатывать масштабные структуры данных, например, вложенные списки.
16
Нет проверки типов данных передаваемых функций, что может повлечь за
собой множественные ошибки.
Python прост для освоения, а между тем этот язык программирования
на уровень выше, чем PHP и C. Это достигается за счет встроенных
высокоуровневых структур данных (списки, массивы, словари).
Главное его достоинство то, что интерпретатор Python реализован
практически на всех платформах и операционных системах.
JAVA представлен на сегодняшний момент в двух вариантах:
JavaScript и собственно JAVA.
JavaScript — по сути, всего лишь надстройка стандарта HTML,
которая значительно расширяет возможности документа, созданного в этом
формате. Часть кода, написанная на JavaScript, внедряется в документ HTML
как подпрограмма и вызывается на исполнение соответствующей строкой
HTML-кода. Весь сценарий JavaScript умещается в одном-единственном теге
<script>. Встроенный в браузер интерпретатор языка воспринимает и скрипт,
и сам код гипертекста как единый документ, обрабатывая те и другие данные
одновременно.
При помощи JavaScript можно полностью контролировать формат
всплывающих
окон
и
встроенных
фреймов,
организовывать
такие
интерактивные элементы, как часы, календарь, бегущие строки и иную
анимацию, создать чат, сделать красивое меняющееся меню.
JAVA — это уже нечто большее: полноценный кроссплатформенный
язык
программирования,
который
будет
правильно
обработан
и
компьютером с операционной системой Windows, и ПК под управлением
UNIX. Большинство web-камер, передающих на сайты изображение в
реальном времени, работают на базе приложений JAVA.
ASP (Active Server Pages, активные страницы сервера) — это мощная
технология от компании Microsoft, позволяющая легко разрабатывать
интернет-приложения и служащая для создания динамических web-страниц.
17
ASP нельзя назвать языком программирования, так как это только
технология
предварительной
обработки,
позволяющая
подключать
программные модули во время процесса формирования страницы. Ее можно
сравнить с библиотекой для сети: «Большой энциклопедический словарь» с
возможностью поиска по архивам. ASP имеет преимущество в скорости по
сравнению с другими технологиями, основанными на скриптах.
Удобство ASP заключается в том, что она работает на специальном
сервере PWS (Personal Web Server), который входит в состав операционной
системы Windows.
1.2.3 Системы управления базами данных
MySQL - свободная система управления базами данных (СУБД).
MySQL относится к реляционным СУБД, характеризуется простотой
структуры данных и удобным для пользователя табличным представлением.
Реляционная модель в MySQL ориентирована на организацию данных в виде
таблиц.
MySQL подходит для всех языков, описанных нами выше. То есть
существуют библиотеки MySQL для языков Perl, РНР, Python, JAVA.
1.2.4 Средства разработки WEB-приложений
Flash — мощная технология для создания интерактивных webприложений и сайтов.
Использование этой технологии позволяет значительно уменьшить
время загрузки документов, при этом приложения обладают высокой
интерактивностью, а также современным эффектным дизайном, можно
18
добавить в сайт различные анимированные ролики, баннеры, сделать
красивую навигацию.
Все операции на flash-сайтах выполняются под управлением языка
сценариев АсtiоnSсriрt, похожего на язык JavaScript. ActionScript —
объектно-ориентированный
язык
программирования,
он
исполняется
виртуальной машиной (ActionScript Virtual Machine), составной частью Flash
Player. Синтаксис языка базируется на стандартной библиотеке C++. У
языков много общего, и ActionScript по скорости выполнения запроса
находится с C++ на одном уровне.
Единственный
недостаток
технологии
Flash
—
чрезвычайная
требовательность к ресурсам, из-за которой web-приложения могут работать
неправильно.
SilverLight — технология от компании Microsoft, прямой конкурент
технологии Flash от компании Adobe. SilverLight базируется на платформе
.NET и основана на XML.
В Silverlight реализованы векторная графика, анимация и средства
воспроизведения видео, что позволяет разработчикам писать Silverlightприложения на любом из языков .NET, самый распространенный из которых
— C# (Си Шарп).
Silverlight
позволяет
программисту,
не
обращая
внимания
на
ограничения web-платформ, воплощать в жизнь самые смелые замыслы
дизайнеров. В рамках модели Silverlight любое созданное дизайнерами
решение сохраняется в виде XAML (который по сути все тот же XML). Этот
XAML-документ впоследствии автоматически встраивается в страницу сайта
при
помощи
среды
выполнения
Silverlight.
Результатом
становится
слаженная работа между программистом и дизайнером.
Фреймворк Ruby on Rails. Фреймворк — это набор инструментов,
библиотек
и
соглашений,
предназначенный
для
упрощения
работы
программиста путем вынесения рутинных, часто повторяющихся задач в
19
отдельные модули. Цель фреймворка — решение сложных задач проекта
путем использования простых структур.
Ruby on Rails представляет собой платформу для создания webприложений,
написанную
на
объектно-ориентированном
языке
программирования Ruby. Данный язык не зависит от операционной системы,
а по синтаксису напоминает уже знакомые нам Perl и Python.
Ruby on Rails предоставляет архитектурный образец для webприложений, обеспечивает их интеграцию с web-сервером и сервером базы
данных; предоставляет однородную среду для разработки динамических
AJAX-интерфейсов с возможностью обработки запросов и выдачи данных в
контроллерах, отражения предметной области в базе данных.
1.3
Классификация атак на Web-сайты и возможные
способы защиты
1.3.1 Основные понятия и определения
Под
несанкционированным
воздействием
на
информацию
понимают действия, направленные на изменение основных характеристик
защищенности
информации
(целостности,
доступности
и
конфиденциальности)[8].
Под
обеспечением
информационной
безопасности
понимают
комплекс мероприятий, обеспечивающий для охватываемой им информации
следующие факторы:
 конфиденциальность – возможность ознакомиться с информацией
(именно с данными или сведениями, несущими смысловую нагрузку, а
не с последовательностью бит их представляющих) имеют в своем
20
распоряжении только те лица, кто владеет соответствующими
полномочиями;
 целостность – возможность внести изменение в информацию (опять
идет речь о смысловом выражении) должны иметь только те лица, кто
на это уполномочен;
 доступность – возможность получения авторизованного доступа к
информации со стороны уполномоченных лиц в соответствующий
санкционированный для работы период времени.
Термины,
использующиеся
при
обеспечении
информационной
безопасности:
 идентификация – определение (распознавание) каждого участника
процесса информационного взаимодействия, перед тем как к нему
будут применены какие бы то ни было понятия информационной
безопасности;
 аутентификация – обеспечение уверенности в том, что участник
процесса
обмена
информацией
идентифицирован
верно,
т.е.
действительно является тем, чей идентификатор он предъявил;
 авторизация – формирование профиля прав для конкретного
участника процесса информационного обмена (аутентифицированного
или анонимного) из набора правил контроля доступа;
 угроза - потенциально существующая возможность случайного или
преднамеренного действия (бездействия), в результате которого могут
быть нарушены основные свойства информации и систем ее обработки:
доступность, целостность и конфиденциальность.
 атака – практическая реализация угрозы или попытка ее реализации с
использованием той или иной уязвимости.
21
1.3.2 Классификация атак по видам направленности нарушений
Web-приложения подвержены атакам всевозможного рода, что делает
их уязвимыми. Как правило, это происходит от недостатка уделяемого
внимания при разработке приложения или настройке Web-сервера. В данном
пункте рассмотрены наиболее типичные типы атак и основные методы
защиты от них [7].

Аутентификация

Авторизация

Атаки на стороне клиента

Выполнение кода

Разглашение информации

Логические атаки
1) Аутентификация (Authentication)
Данный тип атак, посвященный аутентификации, направлен на обход
или эксплуатацию уязвимостей в механизмах реализации аутентификации
Web-серверов. Аутентификация использует как минимум один из трех
механизмов (факторов): "что-то, что мы имеем", "что-то, что мы знаем" или
"что-то, что мы есть".
Подбор (Brute Force)
Brute Force является автоматизированным процессом проб и ошибок
для
подбора
логинов,
паролей,
номеров
кредитных
карт
или
криптографических ключей.
Защита:
Традиционным методом борьбы
с подбором пароля
является,
ограничение на количество ошибочных вводов пароля. Существует
множество вариантов реализаций этой идеи, от самых простых - статическое
ограничение, например не более трех ошибок, до сложно реализованных
динамических, с увеличивающимся промежутком времени запрета между
запросами.
22
Недостаточная аутентификация (Insufficient Authentication)
Insufficient Authentication – уязвимость, которая возникает, когда Webсервер позволяет атакующему получать доступ к важной информации или
функциям
сервера
без
должной
аутентификации.
Интерфейсы
администрирования через Web - яркий пример критичных систем.
Защита:
В зависимости от специфики приложения, подобные компоненты не
должны быть доступны без должной аутентификации.
Решение достаточно просто, при входе в администраторскую часть
сайта, пользователь обязан провести дополнительную аутентификацию, не
смотря на общую на сайте.
2) Авторизация (Authorization)
Данные атаки направленны на методы, которые используются Webсервером для определения того, имеет ли пользователь, служба или
приложение необходимые для совершения действия разрешения. Многие
Web-сайты разрешают только определенным пользователям получать доступ
к некоторому содержимому или функциям приложения. Доступ другим
пользователям должен быть ограничен. Используя различные техники,
злоумышленник может повысить свои привилегии и получить доступ к
защищенным ресурсам.
3) Атаки на стороне клиентов (Client-side Attacks)
Этот тип атак на стороне клиента связан с злоупотреблениями или
использованием пользователей веб-сайта. Когда пользователь посещает вебсайт,
между
двумя
сторонами
устанавливается
технологическое
и
психологическое доверие. Пользователь ожидает, что веб-сайты, которые он
посещает,
предоставляют
действительное
содержание.
Кроме
того,
пользователь не ожидает атак со стороны сайта. Эксплуатируя это доверие,
злоумышленник может использовать различные методы для проведения атак
на клиентов сервера.
23
Подмена содержимого (Content Spoofing)
Подмена содержимого – атака, при которой злоумышленник заставляет
пользователя поверить, что страницы сгенерированы Web-сервером, а не
переданы из внешнего источника.
Межсайтовое выполнение сценариев (Cross-site Scripting, XSS)
Межсайтовый скриптинг или XSS-атака - это атака с использованием
скриптов JavaScript для выполнения определенных вредоносных действий.
Возможность для проведения такой атаки возникает в том случае, если не
была включена фильтрация на обработку специальных символов, таких как
знаки (<, >), кавычки (", ‘), слеши (/, \) и т.д. Наличие уязвимости Cross-site
Scripting позволяет атакующему передать серверу исполняемый код,
вставленный в параметры скриптов или в поля форм, который будет
перенаправлен браузеру пользователя.
4) Выполнение кода (Command Execution)
Эта секция описывает атаки, направленные на выполнение кода на
Web-сервере. Все серверы используют данные, преданные пользователем при
обработке запросов. Часто эти данные используются при составлении
команд, применяемых для генерации динамического содержимого. Если при
разработке не учитываются требования безопасности, злоумышленник
получает возможность модифицировать исполняемые команды.
Внедрение операторов SQL (SQL Injection)
SQL Injection – атака, которая направлена на Web-серверы, создающие
SQL запросы к серверам СУБД на основе данных, вводимых пользователем.
Защита:
Средства борьбы - грамотная фильтрация получаемых данных.
5) Разглашение информации (Information Disclosure)
Атаки данного типа направлены на получение дополнительной
информации о Web-приложении. Используя эти уязвимости, злоумышленник
может определить используемые дистрибутивы ПО, номера версий клиента и
24
сервера и установленные обновления. В других случаях, в утекающей
информации может содержаться расположение временных файлов или
резервных копий. Во многих случаях эти данные не требуются для работы
пользователя. Большинство серверов предоставляют доступ к чрезмерному
объему данных, однако необходимо минимизировать объем служебной
информации. Чем большими знаниями о приложении будет располагать
злоумышленник, тем легче ему будет скомпрометировать систему.
6) Логические атаки (Logical Attacks)
Атаки данного типа направлены на эксплуатацию функций приложения
или логики его функционирования. Логика приложения представляет собой
ожидаемый
процесс
определенных
функционирования
действий.
В
качестве
программы
при
выполнении
примеров
можно
привести
восстановление паролей, регистрацию учетных записей, аукционные торги,
транзакции в системах электронной коммерции. Приложение может
требовать
от
последовательных
пользователя
действий
корректного
для
выполнения
выполнения
нескольких
определенной
задачи.
Злоумышленник может обойти или использовать эти механизмы в своих
целях.
Отказ в обслуживании (Denial of Service)
Denial of Service - тип атак, направленный на нарушение доступности
Web-сервера.
DdoS-атака на вычислительную систему с целью вывести её из строя,
то есть создание таких условий, при которых легитимные (правомерные)
пользователи системы не могут получить доступ к предоставляемым
системой ресурсам, либо этот доступ затруднён. Отказ «вражеской» системы
может быть как самоцелью (например, сделать недоступным популярный
сайт), так и одним из шагов к овладению системой (если во внештатной
ситуации ПО выдаёт какую-либо критическую информацию — например,
версию, часть программного кода и т. д.).
25
Защита:
Очень распространенный вид атак, средствами защиты является,
оптимизация кода, и, что более действенно при наличии у злоумышленника
неких мощностей, ввод ограничений на количество посылаемых данных в
единицу времени.
Обзор существующих систем контроля и управления
1.4
версиями
Резервное копирование – необходимая и самая надежная мера защиты
сайта. Всегда существует вероятность поломки сервера. Хакеры могут
пробить самую мощную защиту. Никто не застрахован от пожара или
подобных ситуаций в серверной. Спасти сайт в подобных ситуациях,
сохранить данные или хотя бы основную часть из них, поможет резервное
копирование.
Резервное копирование - это процесс создания копии данных на
носителе
(жёстком
диске,
дискете
и
т.
д.),
предназначенном
для
восстановления данных в оригинальном месте их расположения в случае их
повреждения или разрушения.
Подавляющее
большинство
разработчиков
приходят
к
системе
контроля версий (СКВ), когда им перестает хватать резервного копирования
проекта в виде стека директорий.
Кто-то пытается подвести под наименование таких директорий некую
систему (к примеру, в виде дат), кто-то хранит описание копий в файлах, ктото находит решение в соответствующем ПО.
Однако приходит определенный момент и разработчики начинают
пользоваться более эффективным решениям — СКВ.
Также одной из самых распространенных причин применения СКВ
может
служить
командная
разработка.
26
В
таком
случае
контроль
монопольного редактирования, отслеживание изменений и их слияние
становится очень удобным, если использовать СКВ.
Базовые понятия и термины, единые для большинства различных
СКВ:
 repository
(хранилище)
—
место
где
СКВ
хранит
данные,
информацию об их изменениях и другую системную информацию;
 checkout — извлечение части или всего содержимого хранилища и
создание на их основе рабочей копии;
 working copy (рабочая копия) — слепок хранилища расположенный
на
локальной
машине.
Именно
рабочая
копия
подвергается
изменениям, перед тем как данные будут занесены в хранилище.
Рабочая копия содержит также данные о версиях содержащихся в ней
файлов. Именно их наличие и определяет, что директория и есть
рабочая копия;
 revision (версия, номер правки, правка) — каждый объект в
понятиях
СКВ
имеет
версию,
номер
которой
назначается
автоматически, если документ изменялся;
 commit (закрепление изменений) — копирование изменений из
рабочей копии в хранилище. При этом создается новая версия;
 update (обновление) — операция получения данных из хранилища,
если в рабочей копии они устарели;
 merge (слияние) — объединение независимых изменений над одним
файлом. Такое происходит, когда в разных правках менялся один и тот
же файл.
Понятие ветвления
Ветвление является важным аспектом работы систем управления
версиями, поскольку типичные приемы управления версиями (по крайней
мере,
при
разработке
программного
27
обеспечения)
подразумевают
использование
ветвей.
Subversion
обладает
достаточно
развитыми
возможностями для ветвления и слияния. На рисунке 3 условно показан
пример эволюции ветвей в хранилище.
Рисунок 3. Пример эволюции ветвей в Subversion
Зелёным цветом показана основная линия разработки проекта (trunk),
жёлтым — ветви, синим — метки, пурпурным — ветвь, разработка которой
прекращена. Красными стрелками показаны слияния изменений.
В хранилище может находиться несколько проектов. В таком случае,
официально рекомендуется в корневом каталоге хранилища создавать для
каждого проекта свой подкаталог, в который входят три подкаталога:
» /trunk — основная ветка разработки. В ней ведется большая часть
разработки: внедряются новые функции, исправляются ошибки.
» /branches — различные ветки. Здесь могут храниться предыдущие
стабильные релизы или располагаться наборы исправлений, решающие
какую либо определенную задачу. В общем, в этом каталоге хранятся все
ветки, кроме /trunk.
» /tags — различные метки. Меткой называется поименованная правка.
Физически представляет собой простую копию части хранилища в
определенный момент времени. В отличие от ветки, в метку нельзя
выполнять фиксацию, т.е. изменять ее. Наиболее часто метки используются
для обозначения релизов проекта.
Самые известные реализации СКВ:
28
 CVS (Concurrent Version System) — система, своими корнями
уходящая в далекие 80-е, очень популярна и сейчас. Обладает почти
всеми необходимыми инструментами для контроля изменений,
сравнения, слияния и устранения конфликтов. Существенным минусом
данной реализации является отсутствие контроля версий директорий;
 VSS (MS Visual SourceSafe) — реализация СКВ софтверного гиганта,
ориентированная на индивидуальных разработчиков или небольшие их
группы. Доступна посредством установки Visual Studio. Имеет
старшего брата Visual Studio Team Foundation Server. К недостаткам
относится Win32-ориентация;
 SVN (Subversion) — централизованная система контроля версий
пришедшая на смену CVS и призванная устранить все ее недостатки.
Имеет
возможность
интегрирования
с
web-сервером
Apache,
отслеживает версии не только файлов, но и директорий. За каждым
объектом в хранилище можно закрепить любую информацию в так
называемых свойствах и она также попадет под контроль версий.
 GIT- был разработан Линусом для работы над ядром Linux.
В отличие от Subversion, GIT является децентрализованной системой
контроля версий. Каждый работает со своим репозиторием, изменения
из которого периодически переносятся в основной. То есть в GIT есть
локальные
коммиты/обновления
для
рабочей
копии
и
есть
коммиты/обновления для репозитория в целом.
Так же GIT позволяет передать сделанные изменения по почте. Это
позволяет штатными средствами GIT получать патчи от людей,
которые не имеют доступа к центральному репозиторию.
29
1.5
Выводы
В этой главе мы рассмотрели общие сведения, связанные с понятием
Web-сайта, классификацию атак на него. Также были рассмотрены сведения,
связанные с восстановлением поврежденных файлов Web-сайта с помощью
системы контроля версий.
1) Представлены основные понятия и определения Web-сайта.
2) Описана классификация атак на Web-сайт и возможные средства
защиты от них.
3) Приведено описание понятие системы контроля версий.
1.6
Из
Постановка задачи на дипломное проектирование
выполненного
аналитического
обзора
вытекает
следующая
актуальная задача дипломного проекта: разработка системы автоматического
восстановления сайта.
Данная задача разбивается на следующие подзадачи:
1.
Выбор наилучшего способа восстановления рабочих файлов сайта,
повреждённых в результате различного рода атак.
2.
Обоснование выбора системы контроля версий Subversion в качестве
способа восстановления повреждённых файлов сайта.
3.
Разработка
системы
автоматического
восстановления
работоспособности сайта.
4.
Программная реализация разработанной системы на языке PHP.
30
2 ПРОЕКТИРОВАНИЕ СИСТЕМЫ АВТОМАТИЧЕСКОГО
ВОССТАНОВЛЕНИЯ РАБОТОСПОСОБНОСТИ WEBСАЙТА
2.1 Место решаемой задачи в комплексной проблеме
Рассмотрим возможные причины порчи и удаления файлов Web-сайта на
рис.2.1:
Возможные причины потери данных
непредумышленная порча или удаление
данных
по ошибке пользователя
непредумышленная порча или удаление
данных
по ошибке администратора
физический отказ сервера
утрата сервера или группы серверов
(кража, пожар, наводнение, ураган)
ошибки приложений, приводящие к удалению
и порче данных
ошибки ОС, приводящие к повреждению
файловой системы
или отдельных файлов
внезапное отключение питания, приводящее
к невосстановимому повреждению файловой
системы
порча или удаление данных в результате
действий хакера или вредоносной
программы
Рисунок 2.1 – Возможные причины потери данных
31
Возможные причины потери данных:
 непредумышленная порча или удаление данных по ошибке
пользователя;
 непредумышленная порча или удаление данных по ошибке
администратора;
 физический отказ сервера;
 утрата сервера или группы серверов (кража, пожар, наводнение,
ураган);
 ошибки приложений, приводящие к удалению и порче данных;
 ошибки ОС, приводящие к повреждению файловой системы или
отдельных файлов;
 внезапное отключение питания, приводящее к невосстановимому
повреждению файловой системы;
 порча или удаление данных в результате действий хакера или
вредоносной программы.
Целью атаки хакеров или вредоносных программ могут быть как Webсервер, так и сам Web-сайт.
Рассмотрим причины, по которым Web-сайт может оказаться под атакой
хакеров:
 спортивный интерес;
 взлом ради получения информации о структуре ресурса, используемого
в нем программно-аппаратного обеспечения, а также реализованных
средствах защиты;
 взлом ради получения конфиденциальной информации;
 вандализм.
Спортивный интерес. Обычно под эту группу попадают начинающие
взломщики, которые хотят похвастаться своими достижениями. Зачастую эти
опыты могут заканчиваться на дефейсе сайта (подмена содержимого сайта на
свое) или рассылке спама.
32
Взлом ради получения информации о ресурсе. Сбор информации о
структуре
ресурса,
используемом
в
нем
программно-аппаратном
обеспечении, а также реализованных средствах защиты.
Взлом ради получения конфиденциальной информации. Данный вид
взлома обычно выполняется на заказ или для продажи или дальнейшего
использования полученной информации. Целью злоумышленников могут
оказаться базы данных, которые размещены на сайте, программы и
документы, находящие в локальной сети и которые могут быть доступны
через уязвимости Web-сайта. В этом случае сайт может подвергаться
различным видам атак.
Вандализм. Это одна из самых опасных категорий. Под эту категорию
попадают в основном атаки, которые совершаются бывшими или еще
работающими сотрудниками. Эти атаки направлены на порчу или удаление
данных.
Способы взлома Web-сайта можно разделить на 3 группы:
 Атакующий получает контроль над самим Web-сервером, на котором
расположен сайт.
В результате совершенной атаки на Web-сервер атакующий может
получить
контроль
на
сервером
и
как
следствие,
получить
несанкционированный доступ к Web-сайту и повредить рабочие
файлы.
Вследствие
этого
работоспособность
Web-сайта
будет
нарушена.
 Атакующий получает у владельца сайта данные авторизации для
доступа к Web-сайту (логин и пароль) и может воспользоваться ими
для изменения Web-сайта или похищения с него информации.
Получить логины и пароли для работы с сайтом "взломщик" может как
с помощью социальной инженерии (попросту каким-либо образом
33
выведав их у администраторов), так и с помощью атаки на
компьютеры, где эти данные могут быть сохранены (последнее
зачастую
выполняется
посредством
троянских
программ)
или
перехвата передаваемых данных.
 Получение доступа к сайту посредством уязвимостей в программном
обеспечении.
Если на сайте установлены какие-либо программные пакеты, код
которых выполняется на веб-сервере (например, система управления
контентом – CMS, форум или чат, картинная галерея, интернетмагазин), то они всегда потенциально опасны с точки зрения "взлома".
Если в программном комплексе есть уязвимость, то «взломщик» с
помощью хитро составленного запроса к сайту может узнать пароли
для управления сайтом или форумом, а то и разместить на нём свою
программу, которая позволит загружать на сайт файлы "взломщика",
удалять и менять любые данные.
На рис.2.2 рассмотрим возможную последовательность действий
атакующего для получения несанкционированного доступа к Webсайту.
34
Общий алгоритм атаки на Web-сайт
Атакующий анализирует
сайт в поисках
различного рода
уязвимостей
Исследует всю общедоступную
информацию о сайте
Анализирует на использование
OpenSourse продуктов
Пытается получить
информацию о структуре
каталогов Web-сайта и
имеющихся файлах сценариев
Пытается получить
информацию об используемом в
нем программно-аппаратном
обеспечении, а также
реализованных средствах
защиты.
Атакующий использует
уязвимости для
получения контроля над
сайтом
Атакующий получает
несанкционированный
доступ к данным
Атакующий подменяет
или удаляет содержимое
сайта
Система
предназначена для
восстановления сайта
до начального
состояния
Пользователь
обращается к сайту и
становится объектом
атаки со стороны
взломанного Web-сайта
Возможна утечка личных,
финансовых и других данных
у пользователя
Возможно заражение
компьютера пользователя
Пользователь видит
неработоспособный сайт и
теряет доверие к Web-сайту
Рисунок 2.2 – Действия атакующего для получения доступа к Web-сайту
35
Действия атакующего для получения доступа к Web-сайту
1. Атакующий
анализирует
Web-сайт
в
поисках
различного
рода
уязвимостей:
1.1. Исследует всю общедоступную информацию о сайте.
1.2. Анализирует
на
использование
OpenSourse
продуктов
для
использования общеизвестных уязвимостей этих систем.
1.3. Пытается получить информацию о структуре каталогов сайта и
имеющихся файлах сценариев.
1.4. Пытается получить информацию об используемом в нем программноаппаратном обеспечении, а также реализованных средствах защиты.
2. Атакующий использует уязвимости для получения контроля над сайтом.
3. Атакующий подменяет или удаляет содержимое сайта.
4. Ничего не подозревающий пользователь посещает сайт и становится
объектом атак со стороны взломанного Web-сайта.
4.1. Возможна
утечка
личных,
финансовых
и
других
данных
у
пользователя.
4.2. Возможно заражение компьютера пользователя.
5. Пользователь теряет доверие к Web-сайту.
На рис.2.3 показаны возможные последствия совершения атаки на Web-сайт.
36
Последствия атак на Web-сайт
Подмена главной
страницы сайта
Подмена информации
на сайте
Удаление файловой
системы
Размещение троянских
программ
Потеря рабочего
времени на
восстановление к
исходному
состоянию
Нарушение
работоспособност
и сайта
Подмена
истинных данных
сайта
Прямые потери
для бизнеса
Падение имиджа
компании
Потеря доверия
клиентов к сайту
Рассылка спама
Создание высокой
нагрузки
Рисунок 2.3 – Последствия атак на Web-Сайт
Наиболее распространенные последствия атак на Web-сайты:
 Подмена главной страницы сайта – одна из самых частых форм
взлома. Вместо привычного содержимого страницы сайта будет
отображаться все что угодно.
 Подмена информации – злоумышленники могут подменить телефон
или другие данные организации. В этом случае клиенты, посещающие
данный сайт, автоматически становятся клиентами злоумышленника.
 Удаление файловой системы – вся информация пропадает, что
становится провальным в случае отсутствия сохраненной копии
ресурса. Также, может пропасть и база клиентских паролей, а также
прочие данные, имеющие критичную ценность.
 Размещение троянских программ – в этом случае владелец сайта
может и не заметить визит хакера, так как на это и нацелена атака.
37
Вредоносные программы могут выполнять различные функции –
осуществлять переадресацию на сайт злоумышленников, воровать
персональные данные клиентов, заражать посетителей вирусами и так
далее.
 Рассылка спама – сайт могут использовать для рассылки спама, в этом
случае «настоящая» корреспонденция не будет доходить до адресата,
так как домен данного сайта практически сразу будет внесен в
централизованную базу данных спамеров.
 Создание высокой нагрузки – отправление в адрес Web-сервера
заведомо некорректных запросов или иные действия извне,
результатом которых будет затруднение доступа к сайту или падение
операционной системы сервера. Такой вид атаки широко
распространен в интернете.
Итогом всех перечисленных последствий атак могут являться:
 временное прекращение работоспособности ресурса;
 потеря доверия к Web-сайту в глазах клиентов (пользователь,
заразившийся вредоносным кодом на таком ресурсе, или
перенаправленный с вашего сайта на сайт сомнительного содержания,
вряд ли когда-либо снова отважится набрать этот адрес в строке
браузера);
 прямые потери для бизнеса (уменьшается число заказов);
 ухудшение имиджа компании, проблемы с надзорными органами;
 потери рабочего времени связанные с поиском поврежденных файлов и
восстановлением их до рабочего состояния.
38
2.2 Решение проблемы восстановления файлов Web-сайта
путем резервного копирования
Даже самые мощные сервера могут ломаться. Хакеры могут пробить
самую мощную защиту. Никто не застрахован от чрезвычайных ситуаций.
Выше было описано, к каким последствиям могут привести осуществленные
атаки на Web-сервер и Web-сайт. Решение проблемы восстановления
испорченных
или
потерянных
файлов
Web-сайта
заключается
в
осуществлении резервного копирования, чтобы в случае потери файлов на
сервере была возможность их восстановления.
Для статических сайтов.
Такие сайты представляют из себя набор статичных html-страничек.
Страницы могут включать в себя и небольшие скрипты, например на php, но
информация хранится непосредственно на этих страницах или в файлах,
подключаемых с помощью функции include (для php) или подобными
способами. Обновление информации на таких сайтах производится только
разработчиками или администратором сайта.
Резервное копирование осуществляется копирование через FTPсоединение заархивированных файлов всего сайта или измененных с
момента предыдущего копирования.
В случае если FTP-доступ к сайту имеют несколько человек, которые
обновляют его страницы независимо друг от друга – необходимо закрыть
доступ
на
запись
для
всех
пользователей,
кроме
администратора,
производящего копирование.
Для динамических сайтов
Cтраницы сайта формируются сервером «на лету» из различных блоков
в соответствии с запрошенной посетителем страницей.
В файловой системе сервера лежат исполняемые скрипты (программы).
Весь информация сайта хранится в базе данных, которая часто физически
39
расположена на другом сервере, недоступном из Интернета. Чтобы обновить
содержимое динамического сайта, нужно добавить текст для новой страницы
и вставить его в базу данных.
Данные на таких сайтах меняются часто. Периодичность
резервного копирования данных зависит от скорости их обновления и от их
важности.
Для сайтов, хранящих данные в файлах, резервное копирование
данных проще всего производить аналогично копированию статичных
сайтов,
через
FTP-соединение.
Но
проблема
целостности
и
непротиворечивости данных в таких типах сайтов выходит на первый план.
Необходимо фиксировать информацию на момент начала процедуры
копирования и в ходе ее не менялась.
Периодичность резервного копирования:
 статичные сайты, движки сайтов, данные редко обновляемых сайтов после каждого обновления;
 данные часто обновляемых сайтов - 1 раз в сутки; можно и чаще, но это
оправдано лишь в особых случаях.
На рис. 2.4 показаны действия владельца Web-сайта для восстановления
поврежденных файлов в случае совершенной атаки. Владелец пытается
понять, какие именно файлы были повреждены или удалены. В случае
обнаружения владелец Web-сайта закачивает исходные файлы, сравнивает с
ними поврежденные файлы. В случае отсутствия исходных файлов он
восстанавливает их «с нуля».
40
Действия владельца Web-сайта для его восстановления
Атака на Web-сайт
Поиск испорченных и удаленных файлов
Ручное сравнение поврежденных файлов Webсайта с исходниками, если они сохранились
Закачивание исходных файлов вместо
поврежденных
Рисунок 2.4 – Действия владельца Web-сайта по его восстановлению
Недостатки
ручного
процесса
резервного
копирования
и
восстановления файлов сайта в случае атаки на него показаны на рис.2.5.
Ручной поиск ошибок неудобен, требует больших затрат внимания и
времени.
Недостатки ручного процесса резервного копирования
в случае атаки на Web-сайт
Долгая и требующая больших
затрат внимания и времени
процедура резервного
копирования
Ручной поиск измененных
файлов
Рисунок 2.5 – Недостатки ручного процесса резервного копирования в случае
атаки на Web-сайт
41
2.3
Решение проблемы восстановления файлов Web-сайта
путем использования Subversion
2.3.1 Преимущества Subversion по сравнению с другими СКВ
CVS и SVN – наиболее популярны и распространены на данный
момент среди разработчиков. Поэтому проведем субъективное сравнение
между этими СКВ.
CVS (Система Параллельных Версий) - зрелая и относительно
надежная система контроля версий. Много проектов с открытыми
исходными кодами, включая KDE, GNOME и Mozilla используют CVS.
Большинство центров открытых исходных кодов, такие как SourceForge,
предлагают CVS как сервис, поэтому ее используют многие другие проекты.
Несмотря на свою популярность, CVS имеет ограничения. Например,
она не поддерживает переименование файлов и директорий. Кроме того,
бинарные
файлы
нераспределенная
не
обрабатываются
система
и
достаточно
атомарные
фиксации
хорошо.
CVS
изменений
не
поддерживаются.
Subversion (SVN) стремится быть лучшей альтернативой CVS . Она
поддерживает большинство соглашений CVS , включая большую часть
набора команд, поэтому пользователям CVS легче приспособиться к нему.
Отличия Subversion и CVS показаны в табл.2.1.
42
Параметр
Subversion
CVS
Возможности
Версии директорий не отслеживаются, то
есть структура директорий одна и та же
(та, которая существует в хранилище на
данный момент) для всех ревизий и всех
Директории
Отслеживает версии не только веток. Если изменить структуру
файлов, но и директорий.
директорий, то при извлечении старых
состояний получаем правильные (старые)
ревизии файлов, но в неправильной
(существующей на момент извлечения)
структуре директорий.
Атомарность
только
на
однофайловых
фиксаций.
уровне
Фактически
фиксация изменений в нескольких файлах
Транзакции
Атомарность
разбивается
многофайловых
фиксаций изменений отдельных файлов.
фиксаций.
Если такая последовательность фиксаций
прервана,
на
то
последовательность
часть
зафиксированной,
файлов
часть
остается
-
не
зафиксированной.
Наборы
изменений
Наборы поддерживаются.
Наборы изменений не поддерживаются.
При
Модификац
ии
имён
файлов
Поддерживает
копирование,
перемещение и переименование
файлов
и
директорий
без
потери истории изменений.
копировании,
перемещении
переименовании файлов файл с новым
именем не имеет никакой истории, то есть
связь со старым именем и его историей
версий полностью теряется. То же самое
для
файлов
внутри
примодификации её имени.
С
Свойства
каждым
файлом
и
и
директорией может быть связан Свойства не поддерживаются
произвольный набор свойств,
43
директории
состоящих
из
значения.
Свойства
находятся
названия
под
и
тоже
управлением
версиями.
Поддерживается
Блокировки необязательная
блокировка
файлов (начиная с версии 1.2).
Блокировки не поддерживаются, но есть
похожий механизм, называемый слежение
Ветви (branch) реализованы в
пространстве
путей.
Это
значит, что для создания ветви
производится
директории
Ветви
копирование Ветви реализованы в «третьем измерении».
(копия и
будет Это значит, что файл на ветви адресуется
ветвью). Создание таких копий тремя параметрами: путём в файловой
— быстрая и не ресурсоёмкая системе, ревизией (или другим способом
операция, потому что данные указания ревизии, например, временем),
не дублируются, вместо этого именем ветви.
фиксируется
новая
версия,
отличающаяся от предыдущей
лишь расположением файлов.
Нет меток (tag), как таковых.
Вместо
них
иерархия
директорий —
метки
используется
создаётся
для
отдельная
директория (как и для ветви).
Метки
Метка — это ветвь, в которой
по договоренности больше не
делают
изменений.
Метки поддерживаются. Метка адресует
помеченное состояние файлов.
Метка
является копией помеченного
состояния
файлов
и
директорий.
Эффективность
Клиент-
При
серверный
версий
любых
между
обновлениях С сервера к клиенту передаются различия,
клиентом
и с клиента на сервер объект передаётся
44
сервером передаются
обмен
только полностью
различия между файлами, что
может существенно уменьшить
сетевой трафик.
Одинаково
Двоичные
с
двоичными
работает как с текстовыми, так эффективна:
файлы
и с двоичными файлами.
Создание
ветвей
эффективно Работа
и
меток
небольшое Затраты
фиксированное
количество количества
и
версия
времени
велики
(зависят
задействованных
от
файлов).
дискового Имена ветвей и меток хранятся избыточно
пространства.
В
новая
менее
сохраняется в хранилище полностью.
Требуется
времени
каждая
файлами
(во всех задействованных файлах).
служебных
директориях
рабочей копии хранится чистая
копия.
Поэтому
операции Чистая копия не хранится, размер рабочей
Накладные просмотра и отката локальных копии примерно равен размеру данных.
расходы
в изменений
рабочей
быстро
копии
хранилищу),
рабочей
выполняются Вследствие этого операции просмотра и
(без
обращения
однако
копии
к отката
локальных
изменений
требуют
размер доступа к хранилищу и выполняются
на
диске медленно.
примерно в два раза больше,
чем размер самих данных.
Расход
памяти
на
Меньше.
Больше.
сервере
Таблица 2.1 – Отличия Subversion и CVS
В дипломном проекте, в качестве системы контроля версий,
предлагается использовать Subversion. Этот выбор обусловлен тем, что
Subversion является более новой, универсальной системой, она более проста
в использовании и администрировании.
45
2.3.2 Схема работы с репозиторием на примере SVN
Сетевая схема работы с Subversion
На рис. 2.7 Рассмотрим сетевую схему работы с Subversion.
Рисунок 2.6 – Сетевая схема работы с SVN
46
Хранилище Subversion – централизованная система, данные хранятся в
одном хранилище. Хранилище может располагаться на локальном диске или
на сетевом сервере.
 Хранилище Subversion может иметь два варианта организации
репозитория:
 репозитории используют для хранения базы данных на основе
Berkeley DB;
 репозитории используют для хранения файлы специального
формата, доступ к данным которых организуется с помощью
собственных библиотек – FSFS, то есть версионированная
файловая система поверх обычной файловой системы.
 Доступ к хранилищу Subversion возможен двумя способами:
 хранилище Subversion может быть подключено серверу HTTP
Apache в виде модуля mod_dav_svn;
 хранилище может быть установлено как автономный сервер
Subversion – svnserve с доступом по собственному SVNпротоколу.
 На противоположной стороне показана программа-клиент Subversion,
которая управляет локальными отражениями различных фрагментов
данных хранилища. Между хранилищем и программой-клиентом
Subversion
проложены различные маршруты, проходящие через
разные слои доступа к хранилищу.
47
Цикл работы с Subversion
Subversion представляет собой звездную архитектуру. На рис.2.8 она
изображается как центральный репозиторий и множество разработчиков,
работающих с ним.
Централизованный
репозиторий
Копирование/
Обновление
(checkout, update)
Копирование/
Обновление
(checkout, update)
Фиксация
изменений
(commit)
Разработчик
Разработчик
Рисунок 2.7 – Схема работы с Subversion
Этапы работы с Subversion:
 Создание
рабочей
копии.
Разработчик
выгружает
данные
из
центрального репозитория на локальную машину(svn checkout).
 Изменения файлов и директорий в рабочей копии. В изменении файлов
Subversion
никак
не
задействован
-
изменения
производятся
программами, предназначенными для этого (текстовые редакторы,
средства разработки и т. п.).
 Для файловых операций, если нужно удалить, переименовать,
переместить или скопировать файл или директорию в рабочей
копии, необходимо использовать средства Subversion (команды
svn delete, svn move, svn copy).
 Просмотр локальных (еще не зафиксированных) изменений в
рабочей копии(svn diff).
48
 Любые локальные изменения, если они признаны неудачными,
можно откатить (svn revert).
 Регулярное обновление рабочей копии последними зафиксированными
изменениями (svn update).
 Фиксация изменений (svn commit).
 Другие разработчики получают доступ к произведенным изменениям.
2.3.3 Преимущества использования SVN для управления Webсайтом
Использование Subversion для работы с сайтом
Рассмотрим использование Subversion для работы с Web-сайтом на
рис.2.8.
49
Клиенты
Разработчики
Internet/Сеть
Internet/Сеть
commit
update
Файлы
Web-сайта
Хранилище
Subversion
Рисунок 2.8 – Использование Subversion для работы с сайтом
Алгоритм работы следующий:
1. Разработчик создает репозиторий Subversion на отдельном сервере.
2. Разработчик помещает в репозиторий Subversion файлы сценариев
Web-сайта (export).
3. На рабочем сервере создается копия Web-сайта из репозитория
Subversion (checkout).
4. При внесении изменений разработчики записывают их в репозиторий
Subversion (commit).
5. После внесения изменений разработчиками в репозиторий Subversion
разработчик обновляет рабочие файлы Web-сайта (update).
50
Cоздается SVN
В SVN помещается Web-сайт
На рабочем сервере создается копия
Web-cайта из SVN
checkout
Разработчики записывают в SVN Измененные
файлы Web-сайта
commit
На рабочем сервере обновляются
файлы Web-сайта
update
Рисунок 2.9 – Использование Subversion для работы с сайтом
Использование системы контроля версий при управлении сайтом дает
массу преимуществ. На рис. 2.11 представлены основные из них.
Преимущества использования SVN в управлении сайтом
В случае взлома
легко обнаружить
измененные файлы
Упрошенная
процедура резервного
копирования с
помощью средств СКВ
Простота
коллективной
разработки сайта
Поддержка большого
количества сайтов на
одной CMS
Рисунок 2.10 – Преимущества использования Subversion при работе с сайтом
Преимущества использования
 Удобная среда для коллективной разработки Web-сайта.
Subversion позволяют при разработке больших проектов отслеживать
все изменения кода, дают возможность нескольким разработчикам
51
работать над одной и той же программой одновременно, не мешая друг
другу.
 Удобный способ синхронизации измененных разработчиком файлов
сценариев Web-сайта и рабочей копии этого сайта на сервере.
При внесении изменений разработчиками в сценарии Web-сайта
(набором команд svn chechout, svn commit) достаточно воспользоваться
возможностями SVN для обновления рабочей копии (командой svn
update).
 Поддержка большого количества сайтов при использовании одного
CMS.
Допустим, на обслуживании у разработчика находится много сайтов
клиентов и необходимо эти сайты обновлять. Вручную обновлять
данные сайты очень трудоемко и долго. При внесении обновлений
можно фиксировать изменения в репозитории и после этого обновлять
содержимое измененных сценариев Web-сайта на серверах клиентов с
помощью команд Subversion.
2.3.4 Недостатки при использовании SVN для управления сайтом
1) Проблема использования SVN на платных хостингах
Для того, чтобы воспользоваться средствами Subversion, необходимо
установить его компоненты:
 Svn – клиент с интерфейсом командной строки.
 Svnversion – программа, показывающая состояние (в пределах
существующих элементов) рабочей копии.
 Svnlook – инструмент для создания, настройки и восстановления
хранилища Subversion.
52
 Svndumfilter
–
программа
для
фильтрации
дамповых
потоков
хранилища Subversion.
 Mod_dav_svn – подключаемый модуль для http-сервера Apache,
использующийся для предоставления сетевого доступа к хранилищу.
 Svnserve – собственный отдельный сервер, запускаемый как процессдемон и доступный посредством SSH; еще один способ для
предоставления сетевого доступа к хранилищу.
Svnsvnc - программа для последовательного зеркалирования одного
хранилища в другое через сеть.
Проблема использования SVN заключается в том, что не все
коммерческие хостинги предоставляют эту возможность.
Получение файлов из размещенных в SVN
проектов, как правило,
требует использования отдельной программы-клиента SVN. На своем
сервере
возможно
установить
консоль
svn
и
пользоваться
его
возможностями. Однако, учитывая нежелание коммерческих хостингов к
установке дополнительных программ или к подключению дополнительных
модулей, универсальным решением было решение, сделанное средствами
"чистого" php.
Разрабатываемый модуль предлагает решение данной проблемы. Для
возможности обновлять рабочие файлы сценариев Web-сайта из репозитория
Subversion владелец сайта сможет воспользоваться разработанным в
дипломном проекте модулем, без установки дополнительных программ для
работы с SVN.
2) Отсутствие
автоматизированного
восстановления
работоспособности поврежденных файлов Web-сайта.
При реализации атаки на Web-сайт разработчики могут среагировать не
сразу. Некоторое время потребуется на аназиз и поиск ошибок,а также на
53
восстановление
поврежденного
кода
сценариев.
В
этом
случае
работоспособность сайта все-таки будет нарушена.
Для предотвращения этого разработанный модуль будет постоянно
контролировать состояние целостности и истинности рабочих файлов Webсайта. В качестве образца для сравнения, разработанный модуль будет брать
исходные файлы Web-сайта из репозитория SVN. На рис.2.12 показано место
модуля в рассматриваемой области.
Атака
сравнение
Модуль
восстановление
Файлы
Web-сайта
Хранилище
SVN
Рисунок 2.11 – Место модуля в обмене данными между рабочим сервером и
SVN
3) Отсутствие информированности владельца Web-сайта или
администратора о том, какие именно файлы были
несанкционированно изменены.
При совершенной атаке на Web-сайт владелец Web-сайта не знает о
том какие именно файлы были повреждены и тратит некоторое время на
выяснение этого.
54
При обнаружении атаки разработанный модуль будет оповещать
администратора сообщениями
об обнаружении несанкционированного
изменения рабочих файлов Web-сайта.
2.3.5 Определение способа для обнаружения повреждения файлов
Полная подмена или частичное изменение исполняемых файлов заманчивая цель для хакеров. Таким образом, они могут добиться
выполнения произвольного кода в системе. Поэтому важной задачей систем
безопасности является обеспечение целостности исполняемых файлов, как во
время их загрузки на компьютер, так и при хранении. Один из способов ее
решения - использование хэширования.
Хеширование ( от англ. hashing ) — преобразование входных данных
произвольной длины в выходную битовую строку фиксированной длины
таким
образом,
чтобы
изменение
входных
данных
приводило
к
непредсказуемому изменению выходных данных. Такие преобразования
также называются хеш-функциями или функциями свёртки, а их результаты
называют хешем или хеш-кодом.
C помощью этой функции можно проверить, правильно ли был скачан
конкретный файл, не был ли он изменен в результате атаки. Если
контрольная сумма совпала - значит файл был скачан без ошибок или не был
поврежден.
Хеш-функция обладает следующими свойствами:
 Для конкретного набора данных хеш всегда постоянен.
 Вероятность того, что два разных набора данных будут иметь
одинаковый хеш, крайне мала.
 Крайне сложно подобрать набор данных таким образом, чтобы хеш от
него был равен нужному значению.
55
 Крайне сложно изменить существущий набор данных, оставив
неизменным его хеш.
Это позволяет использовать хеш-функции в задачах проверки
целостности файлов, архивов, сборок и т.п. (достаточно доверенно передать
получателю хеш-сумму файла и тогда любые несанкционированные
изменения в файле немедленно изменят его контрольную хеш-сумму).
На сегодняшний день подавляющую долю применений хеш-функций
«берут на себя» алгоритмы MD5, SHA-1, SHA-256, а в нашей стране еще и
сертифицированный ГОСТ Р 34.11-94. Существует и множество других
менее известных, или распространенных только в узких сообществах
алгоритмов (например, RIPEMD, TIGER, PANAMA и др.)
Алгоритм MD5 (Message Digest 5)
MD5 - надежный 128-битный алгоритм хеширования, разработанный
профессором Рональдом Л. Ривестом в 1991 году. Предназначен для
создания «отпечатков» или «дайджестов» сообщений произвольной длины.
MD2, MD4
Эти
алгоритмы
являются
более
ранними
версиями
алгоритма
хэширования от RSA Data Security. Известно, что они имеют слабые стороны
и их не рекомендуется использовать.
Алгоритм CRC
CRC (cyclic redundancy code, циклический избыточный код) — способ
цифровой идентификации некоторой последовательности данных, который
заключается в вычислении контрольного значения её циклического
избыточного кода.
Алгоритм Secure Hash Algorithm 1 (SHA-1)
Secure Hash Algorithm 1 - алгоритм криптографического хеширования.
Описан в RFC 3174. Для входного сообщения произвольной длины
(максимум 264 − 1 бит) алгоритм генерирует 160-битное хеш-значение,
называемое также дайджестом сообщения. Используется во многих
56
криптографических приложениях и протоколах. Также рекомендован в
качестве основного для государственных учреждений в США. Принципы,
положенные в основу SHA-1, аналогичны тем, которые использовались
Рональдом Ривестом при проектировании MD4.
Чем пользоваться сегодня?
1. Из широко известных достаточно давно хеш-алгоритмов на
сегодняшний день нет никаких претензий к ГОСТ Р 34.11-94
(разработчик ФАПСИ, 1995) и TIGER (разработчики — криптографы с
мировым именем Э.Бихам и Р.Андерсон, 1995).
2. Новое поколение алгоритмов SHA от американского института
стандартизации NIST (2001-2002 годы) имеет новую нумерацию SHA224, SHA-256, SHA-384, SHA-512 (от разрядности выходных значений)
и иногда объединяется под общим кодовым названием SHA-2.
Алгоритмы имеют иную структуру криптопреобразований и пока
информации об атаках на них не поступало.
3. Алгоритмом md5 можно пользоваться для проверки целостности
данных.
Может ли злоумышленник создать другой файл/архив/т.п., который
будет иметь ту же хеш-сумму, что и чужой оригинальный, чтобы потом
заменить им оригинальный, например, на WEB-сервере или в репозитории
исходных/двоичных кодов?
Нет. Однако, если он является автором оригинального файла, он может
создать две версии файла с одинаковой хеш-суммой: безобидную и
вредоносную, отдать на публичное изучение безобидную, а затем на этапе
распространения незаметно менять версию на вредоносную — проверка на
основе только хеш-функции этого не заметит.
57
2.4
Алгоритм
автоматического
восстановления
работоспособности сайта
На основе алгоритма работы с репозиторием Subversion был разработан
следующий алгоритм автоматического восстановления работоспособности
Web-сайта при несанкционированном изменении его рабочих сценариев.
Алгоритм включает в себя два этапа: этап первичной загрузки и
подсчета характеристик исходных файлов и этап постоянной проверки
состояния целостности файлов сайта.
Схема алгоритма следующая:
Первичная загрузка файлов из репозитория SVN.
1. Установление связи с репозиторием SVN.
2. Поиск заданной в файле конфигурации версии репозитория SVN.
3. Получение дерева каталогов и файлов определенной версии.
4. Создание рабочей копии на сервере.
5. Подсчет контрольной суммы для каждого файла.
6. Расчет и запись характеристик (имя файла, последнее время изменения
разработчиками в SVN и контрольная сумма файла SVN) исходных
сценариев Web-сайта в файл.
Периодическое обновление
1. Установление связи с репозиторием SVN.
2. Поиск заданной в файле конфигурации версии репозитория SVN.
3. Сравнение структуры каталогов и файлов с рабочими каталогами и
файлами Web-сервера.
4. В случае отличия загрузка и создание каталогов и файлов Web-Сайта.
58
5. Перезапись файла с характеристиками рабочих файлов.
6. Проверка на появившиеся в репозитории новые версии путем
сравнения времени изменения из файла с характеристиками и времени
изменения файла из SVN.
7. Загрузка новых версий из репозитория.
8. Перезапись файла на новые характеристики файлов, загруженных из
SVN.
9. Проверка на поврежденные рабочие файлы Web-сервера путем
сравнения контрольных сумм из файла характеристик и подсчета
контрольных сумм каждого рабочего файла.
10.В случае отличия контрольных сумм закачка из SVN файлов.
11.Перезапись файла с характеристиками рабочих файлов.
12.Информирование администратора о поврежденных файлах.
На рис. 2.12 показана последовательность действий при использовании
Subversion для работы с Web-сайтом.
59
Схема работы разработанного модуля на стороне
Web-сайта
1 этап
(первичная загрузка
Web-сайта)
Соединение с SVN
Поиск нужной версии
Получение дерева каталогов и
файлов SVN
Создание рабочей копии
Web-сайта
Подсчет контрольной суммы
каждого файла
Запись характеристик исходных
сценариев Web-сайта в файл
2 этап
(периодическое
обновление)
Соединение с SVN
Сравнение структуры каталогов
и
файлов
Поиск на новые версии файлов,
добавление новых версий в
рабочую копию
Проверка на поврежденные
файлы Web-Сайта
сравнением контрольных сумм
Восстановление поврежденных
файлов Web-сайта
Перезапись файла с
характеристиками измененных в
репозитории сценариев
Информирование
администратора о событии
ошибки
Рисунок 2.12 – Схема работы разработанного модуля
60
2.5 Выводы
В данной главе было рассмотрено место решаемой задачи в
комплексной проблеме: причины нарушения работоспособности сайта,
методы
решения
проблемы
восстановления
с
помощью
резервного
копирования и ручного восстановления поврежденных данных. Были
рассмотрены преимущества использования систем контроля версий для
работы с Web-сайтом, произведен сравнительный анализ различных систем
управления версиями и выбор наиболее оптимальной. Далее была
рассмотрена схема работы с Subversion при восстановлении поврежденных
данных, а также рассмотрены ее основные недостатки. Был разработан
алгоритм для автоматического восстановления поврежденных сценариев
Web-сайта при их несанкционированном изменении с использованием
Subversion.
61
3 РЕАЛИЗАЦИЯ РАЗРАБОТАННОГО АЛГОРИТМА
3.1
Выбор средства для реализации
Алгоритм для восстановления работоспособности Web-сайта в случае
повреждения рабочих файлов реализован на языке PHP.
PHP - один из самых популярных языков программирования. Почти
60%
Web-серверов
используют
PHP.
Миллионы
Web-сайтов
разрабатываются на PHP каждый месяц.
PHP разрабатывался как простая замена языку Perl, и спустя пару лет
он стал чрезвычайно мощным и популярным.
Преимущества PHP
Главным фактором языка РНР является практичность. РНР должен
предоставить программисту средства для быстрого и эффективного решения
поставленных задач. Практический характер РНР обусловлен пятью
важными характеристиками:
 традиционностью;
 простотой;
 эффективностью;
 безопасностью;
 гибкостью.
Существует еще одна «характеристика», которая делает РНР особенно
привлекательным: он распространяется бесплатно! Причем, с открытыми
исходными кодами (Open Source).
 Традиционность
62
Язык РНР будет казаться знакомым программистам, работающим в
разных областях. Многие конструкции языка позаимствованы из С,
Perl.
Код РНР очень похож на тот, который встречается в типичных
программах на С или Pascal. Это заметно снижает начальные усилия при
изучении РНР. PHP — язык, сочетающий достоинства Perl и Си и специально
нацеленный на работу в Интернете, язык с универсальным
и ясным
синтаксисом.
И хотя PHP является довольно молодым языком, он обрел такую
популярность среди web-программистов, что на данный момент является
чуть ли не самым популярным языком для создания web-приложений
(скриптов).
 Простота
Сценарий РНР может состоять из 10 000 строк или из одной строки —
все зависит от специфики задачи. Механизм РНР начинает выполнять код
после первой экранирующей последовательности (<?) и продолжает
выполнение до того момента, когда он встретит парную экранирующую
последовательность (?>). Если код имеет правильный синтаксис, он
исполняется в точности так, как указал программист.
PHP — язык, который может быть встроен непосредственно в html -код
страниц, которые, в свою очередь будут корректно обрабатываться PHP интерпретатором. Можно использовать PHP для написания CGI-сценариев и
избавиться от множества неудобных операторов вывода текста. Можно
привлекать PHP для формирования HTML-документов, избавившись от
множества вызовов внешних сценариев.
Большое
разнообразие
функций
PHP
избавят
многострочных пользовательских функций на C или Pascal.
 Эффективность
63
от
написания
Эффективность является исключительно важным фактором при
программировании для многопользовательских сред, к числу которых
относится и Web.
Очень важное преимущество PHP заключается в его «движке».
«Движок» PHP не является ни компилятором, ни интерпретатором. Он
является транслирующим интерпретатором. Такое устройство «движка» PHP
позволяет обрабатывать сценарии с достаточно высокой скоростью.
По некоторым оценкам, большинство PHP-сценариев (не очень
больших размеров) обрабатываются быстрее аналогичных им программ,
написанных на Perl. Однако чтобы не делали разработчики PHP,
откомпилированные исполняемые файлы будут работать значительно
быстрее – в десятки, а иногда и в сотни раз. Но производительность PHP
вполне достаточна для создания вполне серьезных web-приложений.
 Безопасность
РНР предоставляет в распоряжение разработчиков и администраторов
гибкие и эффективные средства безопасности, которые условно делятся на
две категории: средства системного уровня и средства уровня приложения.
 Средства безопасности системного уровня
В РНР реализованы механизмы безопасности, находящиеся под
управлением администраторов;
при
правильной
настройке
РНР
это
обеспечивает максимальную свободу действий и безопасность. РНР может
работать в так называемом безопасном режиме (safe mode), который
ограничивает возможности применения РНР пользователями по ряду важных
показателей. Например, можно ограничить максимальное время выполнения
и использование памяти (неконтролируемый расход памяти отрицательно
влияет
на
быстродействие
сервера).
Администратор
также
может
устанавливать ограничения на каталоги, в которых пользователь может
просматривать и исполнять сценарии РНР, а также использовать сценарии
64
РНР для просмотра конфиденциальной информации на сервере (например,
файла passwd).
 Средства безопасности уровня приложения
В стандартный набор функций РНР входит ряд надежных механизмов
шифрования. РНР также совместим с многими приложениями независимых
фирм, что позволяет легко интегрировать его с защищенными технологиями
электронной коммерции (e-commerce). Другое преимущество заключается в
том, что исходный текст сценариев РНР нельзя просмотреть в браузере,
поскольку сценарий компилируется до его отправки по запросу пользователя.
Реализация
РНР
на
стороне
сервера
предотвращает
похищение
нетривиальных сценариев пользователями.
 Гибкость
Поскольку РНР является встраиваемым языком, он отличается
исключительной гибкостью по отношению к потребностям разработчика.
Хотя РНР обычно рекомендуется использовать в сочетании с HTML, он с
таким же успехом интегрируется и в JavaScript, WML, XML и другими
языками. Кроме того, хорошо структурированные приложения РНР легко
расширяются по мере необходимости (впрочем, это относится ко всем
основным языкам программирования).
Нет проблем и с зависимостью от браузеров, поскольку перед
отправкой клиенту сценарии РНР полностью компилируются на стороне
сервера. В сущности, сценарии РНР могут передаваться любым устройствам
с браузерами, включая сотовые телефоны, электронные записные книжки,
пейджеры и портативные компьютеры, не говоря уже о традиционных ПК.
Программисты,
занимающиеся
вспомогательными
утилитами,
могут
запускать РНР в режиме командной строки.
Поскольку РНР не содержит кода, ориентированного на конкретный
web-сервер, пользователи не ограничиваются определенными серверами
(возможно, незнакомыми для них). Apache, Microsoft IIS, Netscape Enterprise
65
Server, Stronghold и Zeus — РНР работает на всех перечисленных серверах.
Поскольку эти серверы работают на разных платформах, РНР в целом
является платформенно-независимым языком и существует на таких
платформах, как UNIX, Solaris, FreeBSD и Windows 95/98/NT/2000/XP/2003.
Наконец, средства РНР позволяют программисту работать с внешними
компонентами, такими как Enterprise Java Beans или СОМ-объекты Win32.
Благодаря этим новым возможностям РНР занимает достойное место среди
современных технологий и обеспечивает масштабирование проектов до
необходимых пределов.
 Бесплатное распространение
Стратегия Open Source, и распространение исходных текстов программ
в массах, оказало несомненно положительное влияние на многие проекты, в
первую очередь — Linux.
Принятие стратегии Open Source и бесплатное распространение
исходных текстов РНР оказало неоценимую услугу пользователям. Вдобавок,
отзывчивое
сообщество
«коллективной
службой
пользователей
поддержки»,
и
РНР
является
в
популярных
своего
рода
электронных
конференциях можно найти ответы даже на самые сложные вопросы.
3.2
Хеширование в PHP
В PHP доступны следующие функции хеширования:
 CRC32 – подсчет простой стандартной контрольной суммы CRC32.
Осуществляется с помощью функции PHP crc32;
 MD5 – подсчет хеша MD5. Осуществляется с помощью функции PHP
md5. Хеш можно получить в виде строкового шестнадцатиричного
представления (32 символа), так и в бинарном представлении, которое
66
вдвое короче. Кроме того, есть еще md5_file, которая подсчитывает
контрольную сумму файла.
 SHA1 – подсчет хеша SHA1. Осуществляется с помощью функции PHP
sha1. Хеш можно получить в виде строкового шестнадцатиричного
представления (40 символов), так и в бинарном представлении, которое
вдвое короче. Кроме того, есть еще sha1_file, которая подсчитывает
контрольную сумму файла.
Описание функций хеширования
 md5 string md5(string str)
Получение строки-хеша MD5.
Возвращает хеш-код строки str, основанный на алгоритме корпорации
RSA Data Security под названием "MD5 Message-Digest Algorithm".
В то же время, если длина строки str может достигать нескольких тысяч
символов, то ее MD5-код занимает максимум 32 символа.
 crc32 int crc32(string str)
Получение полиминала строки crc32.
Функция crc32() вычисляет 32-битную контрольную сумму строки str.
То есть, результат ее работы - 32-битное (4-байтовое) целое число.
Обычно
эту
функцию
используют
для
проверки
целостности
переданных данных.
Эта функция работает гораздо быстрее md5(), но в то же время выдает
гораздо менее надежные "хеш-коды" для строки.
 sha1 string sha1 (string str [, bool raw_output])
Получение строки-хэша SHA1.
Возвращает хэш строки str, вычисленный по алгоритму US Secure Hash
Algorithm 1. Хэш представляет собой 40-разрадное шестнадцатиричное
67
число. Если необязательный аргумент raw_output имет значение TRUE,
хэш возвращается в виде двоичной строки из 20 символов.
Для определения целостности рабочих файлов Web-сайта было решено
использовать функцию md5_file в силу ее универсальности.
Описание используемого класса phpsvnclient
3.3
Для
реализации
автоматического
восстановления
поврежденных
сценариев Web-сайта были использованы возможности класса «phpsvnclient»,
класса Open Sourse.
Получение файлов из размещенных в SVN
проектов, как правило,
требует использования отдельной программы-клиента SVN.
С помощью класса «phpsvnclient» можно
связываться с SVN
средствами PHP без установки дополнительных программ SVN.
Данный класс связывается с SVN с помощью протокола WebDAV и
использует для возможности соединения с репозиторием средсва языка PHP
для работы с http и xml.
3.4
Используемые
возможности
PHP
для
реализации
алгоритма
Работа с файлами
В разработанном модуле для работы с файлами в PHP используются
следующие функции:
 fopen(string filename, string mode) - открытие файлов в файловой
системе сервера производится при помощи функции fopen.
o r (Открыть файл только для чтения; после открытия указатель файла
устанавливается в начало файла);
68
o r+ (Открыть файл для чтения и записи; после открытия указатель
файла устанавливается в начало файла);
o w (Создать новый пустой файл только для записи; если файл с таким
именем уже есть вся информация в нем уничтожается);
o w+ (Создать новый пустой файл для чтения записи; если файл с
таким именем уже есть вся информация в нем уничтожается);
o a (Открыть файл для дозаписи; данные будут записываться в конец
файла);
o a+ (Открыть файл для дозаписи и чтения данных; данные будут
записываться в конец файла);
o b (Флаг, указывающий на работу (чтение и запись) с двоичным
файлом; указывается только в Windows).
 file_exists() проверяет, существует ли файл и возвращает true, если файл
существует и false в противном случае.
 file_put_contents() - записать строку в файл.
 file_get_contents() - Получить содержимое файла в виде одной строки.
 is_dir() – проверить существование каталога.
 mkdir - создание каталогов.
Работа с массивами
Основное назначение массивов в PHP – организация групп связанных
значений. Каждый элемент массива имеет индекс (ключ) и значение.
Массивы со строковыми индексами – ассоциативные.
При реализации алгоритма восстановления файлов используется работа
с ассоциативными массивами.
69
Для хранения контрольной суммы md5 и времени последнего
изменения файла создается многомерный ассоциативный массив следующего
вида:
[array.php] => Array
(
[md5] => cd8750ef84678027650c6279da9db4e6
[last-mod] => Sun, 17 Jan 2010 12:52:10 GMT
)
Для получения характеристик файлов можно обращаться к элементам
массива по соответствующим ключам.
3.5
Реализация алгоритма автоматического
восстановления работоспособности сайта
Входные файлы
Conf.php - файл для первичных настроек пользователя.
Параметры:
 URL хранилища.
Пользователь указывает адрес репозитория SVN.
 user и password.
Данные,
необходимые
для
авторизации
пользователя,
чтобы
подключиться к хранилищу.
 Корневая папка SVN (folder_svn) относительно URL, которой лежат
файлы Web-сайта.
 Каталог на сервере с рабочим Web-сайтом (path_site).
Корневая папка с рабочим Web-сайтом
 Номер ревизии.
70
Указывается номер ревизии, получаемой из SVN. Если пользователь
хочет получать данные самой последней версии, то он не указывает в
данном параметре ничего.
 Признак создания каталогов и файлов при первичной загрузке
В случае, если рабочие файлы Web-сайта уже были закачаны на сервер,
пользователь может отказаться от замены их при первичной загрузке.
При этом уже существующие файлы должны быть аналогами файлов
из SVN.
Выходные файлы
 files.txt
В files.txt помещается массив файлов, полученных из репозитория SVN,
и их характеристик: контрольной суммы (md5_file) и даты и времени
последнего
изменения
разработчиками
в
SVN.
Массив
имеет
следующий вид:
[array.php] => Array
(
[md5] => cd8750ef84678027650c6279da9db4e6
[last-mod] => Sun, 17 Jan 2010 12:52:10 GMT
)
 logs.txt
В logs.txt хранятся сообщения о замененных файлах из SVN и причины,
по которым найдено несоответствие.
Рабочие модули
 install.php
Данный файл реализует первый этап разработанного алгоритма
автоматического
восстановления
поврежденных
PHP-скриптов.
Он
предназначен для сохранения массива с именами файлов репозитория и
71
временем их последнего изменения разработчиками в файл характеристик
files.txt.
В файле install.php реализована следующая последовательность действий.
1. Соединяемся с репозиторием SVN по URL, заданном
в файле
конфигурации conf.php.
2. Получаем дерево каталогов и файлов из папки репозитория folder_svn,
заданной пользователем в файле конфигурации.
3. Получаем содержимое файла из SVN с помощью класса phpsvnclient.
4. Если признак создания файлов при первой загрузке, заданный в файле
конфигурации conf.php равен «y» тогда выполняем следующее:
1.1 Если не существует каталога, полученного из SVN - создаем его.
2.1 Если не существует файла, полученного из SVN - создаем его и
записываем содержимым из SVN.
5. Считаем контрольную сумму md5 каждого файла.
6. Создаем массив $files_array, который хранит для каждого файла его md5 и
last_mod (время последнего изменения файла разработчиком в SVN) и
записываем в файл files.txt.
Схема алгоритма, реализованного в файле install.php представлена на
рис.3.1.
72
Первичная загрузка
Начало
Соединение с SVN
Получение определенной
ревизии
Получение дерева каталогов и
файлов SVN
n=0,count($files)
Получаем содержимое файла
из SVN
нет
Создавать файлы?
да
Создаем каталог
Создаем файл
Записываем содержимым из
SVN
Подсчитываем Md5 файла
Добавляем в массив
$files_array md5 и last-mod
Добавляем в массив
$files_array md5 и last-mod
Записываем файл files.txt
массивом $files_array
Конец
Рисунок 3.1 – Схема алгоритма при первичной загрузке
73
 update_svn.php
Данный
модуль
выполняет
основную
функцию
алгоритма
автоматического восстановления поврежденный файлов Web-сайта.
В зависимости от периодичности выполнения данного модуля,
заданной пользователь с помощью возможностей Web-сервера, будет
происходить проверка целостности и истинности рабочих файлов сайта.
В файле install.php реализована следующая последовательность
действий.
1. Соединяемся с репозиторием SVN по URL, заданном
в файле
конфигурации conf.php.
2. Получаем ревизию, заданную в файле конфигурации.
3. Получаем дерево каталогов и файлов из папки репозитория folder_svn,
заданной пользователем в файле конфигурации.
4. Если не существует каталога – создаем его.
5. Если не существует файла выполняем следующее:
5.1. Получаем содержимое файла из SVN с помощью класса phpsvnclient.
5.2. Создаем файл.
5.3. Записываем в файл содержимое, полученное из SVN.
5.4. Считаем контрольную сумму файла.
5.5. Добавляем в массив $files_array имя файла, его md5, last-mod.
5.6. Добавляем в файл logs.txt сообщение об ошибке.
6. Если существует файл выполняем следующее:
6.1. Получаем из файла files.txt массив $files_array.
6.2. Сравниваем
время
изменения
файла
last-mod,
полученное
из
репозитория, и файла из массива $files_array (проверка на случай, если
файл в репозитории был изменен разработчиками в SVN).
6.3. Если last-mod_svn<>last_mod_ files_array тогда
6.3.1. Получаем содержимое файла из SVN.
6.3.2. Перезаписываем файл содержимым из SVN.
74
6.3.3. Добавляем в массив $files_array md5 и
last-mod файла и
перезаписываем files.txt.
6.3.4. Добавляем в файл logs.txt сообщение об ошибке.
6.4. Если last-mod_svn=last_mod_ files_array тогда выполняем следующее:
6.4.1. Сравниваем md5 рабочего файла и md5 файла из массива
$files_array.
6.4.2. Если $md5_file <> $files_array[$filename][md5] тогда выполняем
следующее:
6.4.2.1. Получаем содержимое файла из SVN с помощью класса
phpsvnclient.
6.4.2.2. Перезаписываем файл содержимым из SVN.
6.4.2.3. Добавляем в массив $files_array md5 и last-mod файла и
перезаписываем files.txt.
6.4.2.3. Добавляем в файл logs.txt сообщение об ошибке.
Схема алгоритма, реализованная в файле update_svn.php представлена
на рис. 3.2.
75
Постоянное обновление
Начало
Соединение с SVN
Получение определенной
ревизии
Получение дерева каталогов и
файлов SVN
Конец
n=0,count($files)
Существует каталог?
да
нет
Создаем каталог
Добавляем сообщение об
ошибке в файл logs.txt
нет
Существует файл?
да
Получаем содержимое файла
из SVN
Создаем файл
Записываем содержимым из
SVN
Подсчитываем md5 файла
Добавляем в массив
$files_array md5 и last-mod
Записываем файл files.txt
массивом $files_array
Добавляем сообщение об
ошибке в файл logs.txt
Получаем массив $files_array
из files.txt
нет
да
lastmod_svn=
lastmod_files_array?
Получаем содержимое файла
из SVN
Записываем содержимым из
SVN
Подсчитываем md5 файла
Добавляем в массив
$files_array md5 и last-mod
Добавляем сообщение об
ошибке в файл logs.txt
нет
md5_file=
md5_files_array?
да
Получаем содержимое файла
из SVN
Записываем содержимым из
SVN
Подсчитываем md5 файла
Добавляем в массив
$files_array md5 и last-mod
Добавляем сообщение об
ошибке в файл logs.txt
Рисунок 3.2 – Схема алгоритма в файле update_svn.php
76
Инструкция для пользователя
1. Заполнить файл настроек conf.php
1.1. URL хранилища.
1.2. User и Password для аутентификации в хранилище.
1.3. Корневая папка SVN (folder_svn) относительно URL, которой лежат
файлы Web-сайта.
1.4. Каталог на сервере с рабочим Web-сайтом (path_site).
1.5. Корневая папка с рабочим Web-сайтом.
1.6. Номер ревизии, из которой разработанный модуль будет обновлять
рабочие файлы сайта. Если пользователь хочет, чтобы рабочие файлы
сайта обновлялись на последнюю версию из SVN, тогда данное поле
не заполняется.
1.7. Признак создания каталогов и файлов при первичной загрузке.
Если пользователь уже закачал на сервер рабочие файлы сайта
самостоятельно, тогда можно отказаться от первичной загрузки - в
файле install.php файлы не будут перезаписываться. Условие –
необходимо, чтобы рабочие файлы однозначно соответствовали
файлам указанной в файле конфигурации версии, иначе при
следующей загрузке они все равно будут заменены на полученные из
SVN.
2. Закачать разработанный в дипломном проекте модуль на сервер, где будет
функционировать рабочий сайт.
3. Запустить
install.php,
в
результате
которого
закачаются
файлы
определенной версии из SVN, рассчитаются контрольные суммы файлов и
запишутся массивом в file.txt.
77
4. Добавить выполнение файла update_svn.php в расписание cron с желаемой
периодичностью.
5. Снять права на папку с разработанного в дипломном проекте модуля.
3.6Выводы
В данной главе была описана реализация модуля автоматического
восстановления рабочих файлов Web-сервера на основе использования
Subversion.
Выбран оптимальный язык для реализации модуля – PHP, рассмотрены
его преимущества.
Рассмотрены средства PHP, необходимые для реализации.
Приведен список разработанных файлов, блок-схемы рабочих файлов,
описан файл конфигурации для настроек пользователя а также приведена
инструкция для пользователя с описанием.
78
4 ЭКОНОМИЧЕСКОЕ ОБОСНОВАНИЕ ДИПЛОМНОГО
ПРОЕКТА
2.1
Концепция
экономического
обоснования
дипломного проекта
Цель дипломного проектирования
Целью дипломного проекта является решение проблемы обеспечения
безопасности функционирующего сайта. Данный проект направлен на
разработку системы автоматического восстановления работоспособности
сайта на основе использования Subversion при несанкционированном
изменении PHP-скриптов.
С проблемой безопасности и защиты сайтов и Web-приложений рано или
поздно приходится сталкиваться владельцу любого хоть сколько-нибудь
ценного ресурса. И с течением времени, учитывая тенденцию к переносу
стандартных
клиент-серверных
приложений
в
Web-среду,
можно
констатировать, что актуальность защиты online-приложений только растет.
Анализ области и существующих аналогов
В настоящее время в Internet получили распространение «троянские
программы»,
поражающие
веб-сайты;
программы,
занимающиеся
автоматической рассылкой спама с веб-сайтов; программы для фишинга и
т.п.; софт, работающий практически «без участия человека». Подобные
программы используют и могут нанести ущерб любому плохо защищенному
ресурсу. В результате этого может произойти потеря, разрушение или
нарушение содержимого выполняемых сценариев сайта на сервере, что
способно нанести серьезный ущерб разработчикам, которым придется
спешно переписывать сайт или восстанавливать все нуля. Возможно, работу
79
сайта придется приостановить на время, требующееся разработчикам для
восстановления, что в свою очередь может вызвать потерю клиентов.
Во избежание потери важных для разработчиков данных вопрос
безопасности нужно решать как на этапе разработки веб-сайта, так и в
процессе
его
использовать
разрабатывается
функционирования.
встроенные
сценарий.
На
средства
Чтобы
этапе
разработки
защиты
языка,
обеспечить
необходимо
на
котором
безопасность
функционирующего сайта необходимо использовать шифрование, а также
различные средства защиты со стороны операционной системы и сервера.
Необходимо грамотно настраивать используемый сервер, что требует
больших затрат. Однако, возможность нанесения ущерба сайту всегда
остается.
Задачи для реализации
Для этого будет разработана система автоматического восстановления
работоспособности сайта на основе использования Subversion, в случае
несанкционированного изменения PHP-сценариев. Использование системы
Subversion позволит не только спасти случайно или преднамеренно
поврежденные или удаленные файлы сценариев, но и выбрать возможность
восстановления их до предыдущего состояния. Будет разработан PHPмодуль, следящий за целостностью рабочих PHP-сценариев сайта, и в случае
их повреждения или удаления в результате атак различного рода будет
восстанавливать их содержимое, загружая оригиналы из репозитория
Subversion. Также будет существовать возможность обновления версии
рабочих PHP-файлов сайта из репозитория Subversion по желанию
разработчиков. При этом предполагается, что Subversion и исполняемые
файлы сайта находятся на разных серверах для большей надежности.
80
2.2
В
Трудоемкость и календарный план
основе
определения
стоимости
проекта
лежит
перечень
выполненных работ и их трудоемкость. Данные по трудоемкости и срокам
выполнения дипломного проекта приведены в таблицах 3.1 – 3.3.
Календарный план разбит на три месяца работы. В данном случае
исполнителями
разработки
системы
автоматического
восстановления
работоспособности сайта при несанкционированном изменении PHPскриптов являются научный руководитель и автор данного дипломного
проекта
–
инженер.
Квалификацию
научного
руководителя
можно
определить как специалист автоматизированных систем управления и
обработки информации, в то время как исполнителем является инженер.
Отметим, что при выполнении экономической и правовой части дипломного
проекта место руководителя дипломного проекта занимают руководитель по
экономическому обоснованию дипломного проекта и руководитель по
охране интеллектуальной собственности соответственно.
Напомним, что задачей данного дипломного проекта является
разработка
системы автоматического восстановления работоспособности
сайта на основе использования Subversion при несанкционированном
изменении PHP-скриптов.
81
Таблица 3.1 - Трудоемкость и ленточный график проведения дипломного проекта за ноябрь
Тру
Этапы и работы
Исполнитель
до-
Чи
слен-
емк
ость,
нос
ть,
чел
ност
ь,
Сбор
и
изучение
че
дн.
рук. д.п.
1
1
1
испол.
1
1
1
испол.
4
1
4
испол.
2
1
2
рук. д.п.
1
1
1
испол.
1
1
1
рук. д.п.
1
1
1
испол.
5
1
5
рук. д.п.
1
1
1
документации по теме д.п.
Составление
примерного
содержания тех. разделов д.п.
Проверка
примерного
содержания тех. разделов д.п.
Корректировка
примерного
содержания тех. разделов д.п.
Проверка
и
утверждение
содержания тех. разделов д.п.
Составление
чернового
варианта первого тех. раздела д.п.
Проверка чернового варианта
1
2
3
4
5
6
7
8
9
0
ТЗ на д.п.
Изучение ТЗ на д.п.
Продолжительность работы (пятидневка)
тель-
л.
-дн
Составление и утверждение
Дли
82
1
1
1
1
1
1
1
1
1
1
2
3
4
5
6
7
8
9
1
первого тех. раздела д.п.
Корректировка
первого
испол.
2
1
2
рук. д.п.
1
1
1
технического раздела д.п.
Проверка
и
утверждение
первого технического раздела д.п.
83
Таблица 3.2 - Трудоемкость и ленточный график проведения дипломного проекта за декабрь
Труд
Этапы и работы
Исполнитель
о-
Ч
ислен-
емко
сть,
н
ость,
челдн
Изучение
программных
ч
Дли
Продолжительность работы (пятидневка)
тельност
ь,
дн.
ел.
1
испол.
1
1
1
испол.
1
1
1
испол.
3
1
3
испол.
3
1
3
испол.
4
1
4
рук.
1
1
1
испол.
2
1
2
рук.
1
1
1
средств разработки
Составление
алгоритма
для разработки
Непосредственная
разработка модуля
Тестирование
разработанного модуля
Составление чернового
варианта второго тех. раздела
д.п.
Проверка
чернового
варианта второго технического
д.п.
раздела д.п.
Корректировка
второго
технического раздела д.п.
Проверка и утверждение
84
2
3
4
5
6
7
8 09
1
1
1
1
1
1
1
1
1
1
2
2
1
2
3
4
5
6
7
8
9
0
1
2
2
второго технического раздела
д.п.
д.п.
85
Таблица 3.3 – Трудоемкость и ленточный график проведения дипломного проекта за январь
Тру
Этапы и работы
Ис
полнит
ель
до-
слен-
емк
ость,
чернового
варианта
экономического
обоснования д.п.
Проверка
нос
ть,
чел
Дли
ност
ь,
варианта
экономического
обоснования д.п.
че
дн.
исп
2
1
2
рук
1
1
1
исп
1
1
1
рук
1
1
1
исп
2
1
2
рук
1
1
1
исп
1
1
1
рук
1
1
1
1
1
1
.ТЭО
Корректировка экономического обоснования д.п.
ол.
Проверка и утверждение экономического обоснования
д.п.
.ТЭО
Составление чернового варианта раздела д.п.по охране
интеллектуальной собственности
ол.
Проверка чернового варианта раздела д.п. по охране
интеллектуальной собственности
.ОИС
Корректировка чернового варианта раздела д.п. по
охране интеллектуальной собственности
Проверка и утверждение раздела д.п. по охране
интеллектуальной собственности
Дополнение отчета о д.п. необходимыми структурными
ол.
.ОИС
исп
86
1
2
3
4
5
6
7
8
9
0
ол.
чернового
Продолжительность работы (пятидневка)
тель-
л.
-дн
Составление
Чи
1
1
1
1
1
1
2
3
4
5
1
элементами (реферат, аннотация и т.д.)
ол.
Проверка и утверждение дополнительных структурных
элементов отчета о д.п.
рук
1
1
1
исп
2
1
2
рук
1
1
1
. д.п.
Оформление отчета по д.п. в соответствии с [14] и [15]
ол.
Проверка правильности оформления отчета по д.п.
. д.п.
87
2.3
В
Определение стоимости разработки системы
данном
подразделе
рассчитываются
затраты,
связанные
с
проведением разработки. Основные статьи калькуляции приведены в
Таблице 3.4. При проведении расчетов были использованы следующие
статьи:
Материалы – затраты на сырье, основные вспомогательные материалы,
покупные полуфабрикаты.
Расходы на оплату труда – заработная плата сотрудников.
Спецоборудование – затраты на приобретение специальных стендов, и
другого необходимого оборудования.
Отчисления на социальные нужды – затраты связанные с выплатой
единого социального налога.
Прочие прямые расходы – расходы на получение специальной научно
технической информации, платежи за использование средств связи и
коммуникации.
Материалы:
Таблица 3.4 - Расходы, относящиеся к статье «Материалы»
Материал
Количес
тво,
Стоимость
единицы, руб.
шт.
Стоимос
ть,
руб.
Монитор Asus 19’’
1
6420
6420
Intel
1
15000
15000
Клавиатура Genius
1
190
190
Мышь Genius
1
180
180
Принтер HP DJ D4363
1
2300
2300
E7500/2/320/onboard/Windows
7 Professional
88
Сканер HP SJ G2710w
1
2860
2860
Канцелярские товары
-
-
150
Бумага для принтера
1
265
260
ИТОГО:
27180
Спецоборудование
К статье расходов «Спецоборудование» относятся
затраты
на
приобретение (или изготовление) специальных приборов, стендов, другого
специального оборудования, необходимого для выполнения дипломного
проекта. В данной работе специального оборудования не потребовалось,
поэтому затраты на его приобретение (изготовление) равны 0.
Оплата труда
В
работе
дипломного
непосредственно
проекта,
были
исполнитель,
задействованы
руководитель
руководитель
по
технико-
экономическому обоснованию, руководитель по охране интеллектуальной
собственности, поэтому расходы на выплату заработной платы будут
учитываться в отношении данных лиц. Величина дополнительной заработной
платы составляет 10 % от основной заработной платы. Расчет основной
заработной платы показан в таблице 3.5.
Таблица 3.5 - Расчет основной заработной платы
Участник
д.п.
Научный
руководитель
д.п.
Исполните
ль
д.п.
(студент)
Руководите
ль ТЭО
Руководите
ль ОИС
Заработн
Количест
Обща
ая
плата, во рабочих я сумма,
руб.
месяцев
руб.
30000
3
90000
15000
3
45000
15000
1
15000
15000
1
15000
89
ИТОГО:
16500
0
Основная заработная плата исполнителей равна:
СЗО = 165000 руб.
Дополнительная заработная плата включает в себя оплату отпусков, а
также выплаты премий и вознаграждений. Рассчитаем дополнительную
заработную плату по формуле 3.1:
СЗД = СЗО *0,12 (3.1),
где процент дополнительной заработной платы – 12 %.
СЗД = 165000 *0,12 = 19800 руб.
Расходы на заработную плату рассчитаем по формуле 3.2:
Сзп = СЗО + СЗД = 184800 руб. (3.2).
Отчисления на социальные нужды
Рассчитаем величину отчислений на социальные нужды за три месяца.
Она рассчитывается по формуле 3.3:
C сн  С з 
где
Сз
Н сн
100
(3.3),
- величина заработной платы;
Н сн
- ставка единого социального
налога, %. На момент написания дипломного проекта ставка единого
социального налога равна 26,2%. Исходя из имеющихся данных, вычислим
размер отчислений:
C CH  184800 
26 , 2
 48417,6
100
руб.
Затраты по работам, выполняемым сторонними организациями
К
статье
«Затраты
по
работам,
выполняемым
сторонними
организациями» относят затраты по оплате всех видов работ, выполняемые
непосредственно
для
конкретного
дипломного
проекта
сторонними
организациями, в том числа по изготовлению опытных образцов и макетов,
аренда оборудования и ЭВМ и т.д. В рамках выполнения данного
90
дипломного проекта работы, выполняемые сторонними организациями, не
потребовались, поэтому затраты, связанные с ними, равны 0.
Командировочные расходы
К статье «Командировочные расходы» относятся расходы на все виды
служебных
командировок
выполнению
дипломного
работников,
проекта.
В
выполняющих
рамках
задания
выполнения
по
данного
дипломного проекта служебные командировки не производились, поэтому
затраты, связанные с ними, равны 0.
Прочие прямые расходы
К прочим прямым расходам отнесем статьи, представленные в
таблице 3.6.
Таблица 3.6 - Расходы, относящиеся к статье «Прочие прямые расходы»
Наименование
Сумма, руб.
Internet
1500
Телефон
150
Покупка литературы (Фленов М.Е. РНР глазами
хакера. — СПб.: БХВ-Петербург, 2005. — 304 с : ил. )
ИТОГО:
300
1950
Накладные расходы
К накладным расходам мы отнесем затраты, на содержание и
эксплуатацию
основных
средств,
на
обслуживание производства, а именно
управление,
организоацию,
затраты на электроэнергию и
амортизацию.
Накладные расходы составляют 20% от общих расходов:
C HP  C O 
20
(3.4),
100
Общая себестоимость дипломного проекта
Рассчитаем общую себестоимость дипломного проекта, для чего все
предыдущие вычисления сведем в одну таблицу 3.7.
91
Таблица 3.7 - Смета затрат на проведение дипломного проекта
Наименование статьи расходов
Материалы
Спецоборудование
Расходы на оплату труда
Отчисления
на
социальные
нужды
Затраты
по
работам,
выполняемым
сторонними
организациями
Командировочные расходы
Прочие прямые расходы
Накладные расходы
Себестоимость д.п.
2.4
Сумма, руб.
27180
0
184800
48417,6
0
0
1950
42641,5
277809,12
Комплексная оценка эффективности проведенной
работы
Основная задача, поставленная перед разработчиками – создание
системы автоматического восстановления работоспособности сайта на
основе использования Subversion при несанкционированном изменении PHPскриптов.
Социальный эффектом разработанного модуля:
 обеспечение автоматического восстановления потерянных или
поврежденных рабочих файлов сервера в случае их несанкционированного
изменения;
 уменьшение риска нарушения работы сайта;
 уменьшение риска потери клиентов, пользующихся сайтом в случае его
повреждения;
 уменьшается риск прямых потерь для бизнеса и падения имиджа
компании;
 уменьшение зависимости от «человеческого фактора»;
92
 уменьшение затрачиваемого работниками времени на поиск ошибок.
Рассчитанная стоимость дипломного проекта составляет 277809,12.
Необходимость в разработке средств защиты информации связана с
тем,
что
существует
множество
субъектов
и
структур,
весьма
заинтересованных в чужой информации и готовых заплатить за это высокую
цену.
2.5
В
Выводы
данном
разделе
пояснительной
записки
было
произведено
экономическое обоснование дипломного проекта, в ходе которого был
составлен перечень основных этапов и видов работ, определена их
трудоемкость, рассчитаны затраты на проведение дипломного проекта и
дана комплексная оценка ее эффективности.
В ходе комплексной оценки эффективности дипломного проекта была
показана актуальность и целесообразность применения разработки модуля
для автоматического восстановления работоспособности сайта в случае
повреждения или удаления файлов или их фрагментов. Был показаны
социальный (качественно) эффект от применения разработанного модуля.
93
5 ОХРАНА ИНТЕЛЛЕКТУАЛЬНОЙ СОБСТВЕННОСТИ
5.1
Введение
Мною, Драбек Дарьей Сергеевной, в процессе выполнения дипломного
проекта
разработан
автоматического
модуль
для
восстановления
программы
ЭВМ
работоспособности
«Модуль
сайта
на
для
основе
использования Subversion при несанкционированном изменении PHPскриптов». Этот результат научно-технической деятельности входит в
перечень
охраняемых
объектов
интеллектуальной
собственности
Гражданского Кодекса РФ. Программа разработана по заданию работодателя
ОАО «Азимут», который является ее правообладателем.
5.2
Общие положения
Программы для ЭВМ и базы данных как объекты интеллектуальной
собственности
Интеллектуальная собственность
Под интеллектуальной собственностью понимают особый вид
гражданских прав (исключительное право) в отношении результатов
интеллектуальной деятельности, таких как изобретения, промышленные
образцы (дизайн), компьютерные программы, другие произведения науки,
произведения литературы, искусства, которые принято называть объектами
интеллектуальной
собственности,
а
также
различных
средств
индивидуализации производителя товаров и услуг, таких как товарные знаки,
знаки обслуживания, фирменные наименования и др. [2, ст. 1225]. Основным
содержанием таких прав является монополия их владельца на использование
этих объектов, включая право запретить или разрешить их использование
94
другим, а также право переуступить другому лицу эти правомочия или
отказаться от них вовсе.
Согласно определению интеллектуальной собственности, принятому в
российском
законодательстве,
а
также
на
основании
определения
Стокгольмской конференции от 14 июля 1967 г., программы для ЭВМ
(компьютерные
программы)
и
базы
данных
относятся
к
объектам
интеллектуальной собственности. Программам для ЭВМ и базам данных
предоставляется охрана нормами авторского права как литературным
произведениям в соответствии с Бернской конвенцией, причем программы
для ЭВМ охраняются как литературные произведения, а базы данных - как
сборники.
В Российской Федерации вопросы предоставления правовой охраны
программам для ЭВМ и базам данных регулируются Гражданским кодексом
РФ, Часть 4 (ГК РФ Ч.4).
Программа для ЭВМ
Под программой для ЭВМ понимается представленная в объективной
форме
совокупность
данных
и
команд,
предназначенных
для
функционирования ЭВМ и других компьютерных устройств в целях
получения определенного результата. Кроме того, в понятие программы для
ЭВМ входят подготовительные материалы, полученные в ходе разработки
программы для ЭВМ, и порождаемые ею аудиовизуальные отображения
[2, ст. 1261].
С точки зрения программистов и пользователей программа для ЭВМ
представляет собой детализацию алгоритма решения какой-либо задачи и
выражена
в
форме
обеспечивающих
определенной
последовательности
выполнение компьютером
преобразования исходных
данных в искомый результат.
Авторское право на программу для ЭВМ и базу данных
95
предписаний,
Права в отношении программ для ЭВМ и баз данных подразделяются
на личные неимущественные и исключительные права.
Личные права включают право авторства, право на имя и право на
неприкосновенность (целостность), право на обнародование программы
для ЭВМ или базы данных [2, ст. 1265-1268]. Они связаны непосредственно с
автором программы для ЭВМ или базы данных: принадлежат лицу, чьим
творческим трудом созданы программа для ЭВМ или база данных - автору,
являются неотчуждаемыми, т. е. не могут быть переуступлены другому лицу,
и не ограничены каким-либо сроком [2, ст. 1228].
Исключительные права непосредственно связаны с понятием
"использования" программ для ЭВМ и баз данных: "Автору произведения
или
иному
правообладателю
принадлежит
исключительное
право
использовать произведение … в любой форме и любым не противоречащим
закону способом …" [2, ст. 1270, п.1]. При этом под использованием
понимается осуществление определенных действий с программами для ЭВМ
или
базами
данных,
а
именно:
опубликование
(выпуск
в
свет);
воспроизведение (полное или частичное) в любой форме, любыми
способами; распространение; модификацию и иное использование [2, ст.
1270, п.2]. Они могут принадлежать автору или иному правообладателю
(гражданину
или
юридическому
лицу).
Правообладатель
может
распоряжаться исключительным правом на произведение [2, ст. 1270, п.1], в
том числе по своему усмотрению разрешать или запрещать другим лицам
использование
[2,
ст.
1229,
п.1].
Распоряжение
принадлежащим
правообладателю исключительным правом может осуществляться любым, не
противоречащим закону и
существу такого исключительного права
способом, в том числе путем его отчуждения по договору другому лицу или
предоставления другому лицу права использования [2, ст. 1233, п.1]. Срок
действия исключительного права ограничен
96
Правообладание
Если
автор
(работник)
связан
с
каким-либо
предприятием
(работодателем) трудовыми отношениями и создал программу или базу
данных в пределах установленных для него трудовых обязанностей, то в этом
случае исключительное право на созданную программу для ЭВМ или базу
данных принадлежит работодателю, если трудовым или иным договором
между работодателем и автором не предусмотрено иное, а такая программа
или база данных называется служебным произведением [2, ст. 1295, п. 1, 2].
Работодатель в данном случае правомочен распоряжаться программой для
ЭВМ или базой данных по своему усмотрению. За автором сохраняются
только
личные
права,
и
автор
не
имеет
права
распоряжаться
исключительными правами и предоставлять для использования программу
для ЭВМ или базу данных другим физическим или юридическим лицам.
Однако если предварительно между автором и работодателем был заключен
договор в отношении использования созданной программы для ЭВМ или
базы данных и распоряжения исключительными правами на них, то
руководствуются условиями договора.
Передача исключительных прав на программу для ЭВМ и базу
данных : исключительные права на программу для ЭВМ и базу данных
могут быть переданы в полном объеме (отчуждение исключительных прав)
другим физическим или юридическим лицам. Передача исключительных
прав должна быть оформлена заключением договора в письменной форме,
который называется “Договор об отчуждении исключительного права” [2,
ст.1234].
При полной уступке исключительных прав автором или иным
правообладателем правоприобретатель (физическое или юридическое лицо)
получает возможность осуществлять все эти права в полном объеме:
97
использовать программу для ЭВМ или базу данных самостоятельно,
например, путем изготовления и распространения экземпляров программ или
баз данных, разрешать и запрещать третьим лицам их использование,
передать все права или отказаться от них вовсе, - в то время как прежний
правообладатель лишается этой возможности.
Нарушение прав на программу для ЭВМ и базу данных
Специфика программ для ЭВМ и баз данных такова, что они очень
уязвимы в смысле их незаконного использования (прежде всего, путем
копирования
и
распространения
копий).
Незаконно
изготовленные
(скопированные) или используемые экземпляры программы для ЭВМ или
базы данных называются контрафактными, а несанкционированное
использование чужих программ или баз данных путем опубликования
(выпуска
в
свет),
распространения,
воспроизведения
иного
(полного
использования
или
считается
частичного),
нарушением
исключительных прав на программы для ЭВМ или базы данных, т.е.
нарушением авторского права.
5.3
Перечень основных документов
98
"УТВЕРЖДАЮ”
Генеральный директор
___________Борин Г. А.
«___»___________2010 г.
ПРОГРАММА ДЛЯ ЭВМ
” Модуль для автоматического восстановления работоспособности
сайта на основе использования Subversion при
несанкционированном изменении PHP-скриптов ”
Исходный текст программы
Всего 10 листов
Правообладатель: Открытое акционерное общество «Азимут»
Автор:
Драбек Дарья Сергеевна
(ф., и., о.)
(C) ОАО ”Азимут”, 2010
Санкт-Петербург
99
2010
ЛИЦЕНЗИОННЫЙ ДОГОВОР
НА ИСПОЛЬЗОВАНИЕ ПРОГРАММЫ ДЛЯ ЭВМ
Стороны в Договоре:
Открытое акционерное общество «Азимут» именуемый в дальнейшем
"ЛИЦЕНЗИАР", в лице генерального директора Борина Г.А.. с одной
стороны, и Федеральный центр информатизации при Центральной
избирательной комиссии
Российской Федерации (ФЦИ ЦИК РФ),
именуемый в дальнейшем "ЛИЦЕНЗИАТ", в лице руководителя ФЦИ
ЦИК РФ Ященко В.В., действующего на основании Устава, с другой
стороны,
принимая во внимание:
1) что Лицензиар является автором и правообладателем программы для ЭВМ
" Модуль для автоматического восстановления работоспособности сайта
на основе использования Subversion при несанкционированном изменении
PHP-скриптов";
2) Лицензиат желает получить на условиях настоящего Договора лицензию
на использование упомянутой программы для ЭВМ с целью обеспечения
автоматического восстановления работоспособности сайта на основе
использования Subversion при несанкционированном изменении PHPскриптов;
3) Лицензиар готов предоставить Лицензиату такую лицензию, договорились
о следующем.
1. Термины и их определения
1.1. "ПРОГРАММА ДЛЯ ЭВМ (ПрЭВМ)" - программное обеспечение
"Модуль для автоматического восстановления работоспособности сайта
на основе использования Subversion при несанкционированном
изменении PHP-скриптов".
1.2. "ДОКУМЕНТАЦИЯ"
комплект
документов,
передаваемых
Лицензиаром Лицензиату, включающий руководство пользователя по
применению и обслуживанию программы для ЭВМ.
1.3. "ПРОИЗВОДСТВЕННАЯ
ПЛОЩАДКА"
Лицензиата.
100
-
научные
лаборатории
1.4. "РАБОЧЕЕ МЕСТО" - конкретная ЭВМ, на которой используется
Программа для ЭВМ.
2. Предмет Договора
2.1. Лицензиар предоставляет Лицензиату на срок действия настоящего
Договора и за вознаграждение, уплачиваемое
неисключительную лицензию на использование ПрЭВМ.
Лицензиатом,
2.2. Лицензиар передает Лицензиату Документацию к ПрЭВМ.
2.3. Предоставленное Лицензиату в рамках настоящего Договора право
ограничено Производственной площадкой.
2.4. Лицензиар осуществляет авторский контроль за соблюдением объемов
использования ПрЭВМ по настоящему Договору, при этом Лицензиат
обеспечивает возможность такого контроля.
2.5. Лицензиар сохраняет за собой право самому использовать ПрЭВМ и
предоставлять неисключительные лицензии на право ее использования
третьим лицам.
3. Обеспечение Договора
3.1. Лицензиар передает Лицензиату ПрЭВМ в объеме и виде, достаточном
для ее использования, и Документацию в течение 15 (пятнадцати) дней со
дня подписания настоящего Договора. ПрЭВМ передается Лицензиату в
виде
в количестве 5 (пяти) штук, содержащих ПрЭВМ. По факту
передачи ПрЭВМ и Документации составляется акт сдачи-приемки с
перечнем переданных материалов, подписываемый обеими Сторонами.
3.2. Если Лицензиат установит неполноту или неправильность полученных
ПрЭВМ или Документации, то Лицензиар в течение 15 (пятнадцати) дней
после сообщения ему об этом Лицензиатом обязан передать
недостающие материалы или устранить недостатки ранее переданных
ПрЭВМ и Документации.
3.3. Для оказания помощи в освоении ПрЭВМ Лицензиар по просьбе
Лицензиата оказывает консультации пользователям ПрЭВМ.
3.4. Для целей использования ПрЭВМ в объеме, предусмотренном п. 2.1
настоящего Договора, Лицензиат может изготавливать в необходимом
ему количестве копии ПрЭВМ и копии Документации.
4. Усовершенствования
4.1. Лицензиар обязуется незамедлительно информировать Лицензиата о всех
произведенных им усовершенствованиях ПрЭВМ и, при желании
101
Лицензиата, передать ему в согласованные сроки новые варианты
ПрЭВМ. В отношении новых вариантов ПрЭВМ, переданных
Лицензиаром Лицензиату, распространяются все условия настоящего
Договора.
4.2. Лицензиат
обязуется предоставлять Лицензиару информацию об
использовании ПрЭВМ, которая могла бы быть полезной для
усовершенствования ПрЭВМ.
5. Платежи
5.1. За
предоставление прав, предусмотренных настоящим Договором,
Лицензиат выплачивает Лицензиару единовременное вознаграждение в
размере 30000(тридцать тысяч) рублей.
5.2. Вознаграждение,
предусмотренное п. 5.1 настоящего Договора,
выплачивается Лицензиатом в течение 30 (тридцати) дней, следующих
после подписания акта приемки-сдачи.
6. Реклама
6.1. Лицензиат обязуется при опубликовании результатов исследований,
полученных с использованием ПрЭВМ, сообщать в рекламных целях, что
исследования производились с использованием ПрЭВМ Лицензиара с
указанием авторского права Лицензиара.
7. Защита передаваемых прав
7.1. Лицензиат обязуется не вносить самовольно каких-либо изменений в
ПрЭВМ и Документацию и не дополнять их какими-либо
комментариями. Подобные изменения или дополнения возможны только
с согласия Лицензиара.
7.2. Лицензиат
обязуется предпринимать все необходимые меры для
предотвращения несанкционированного копирования ПрЭВМ и
Документации третьими лицами, а также несанкционированной передачи
ПрЭВМ и Документации работниками Лицензиата третьим лицам.
7.3. Если Лицензиату станет известно о противоправном использовании
ПрЭВМ третьими лицами, то он незамедлительно сообщит об этом
Лицензиару.
8. Ответственность Сторон и разрешение споров
8.1. За невыполнение или
ненадлежащее выполнение обязательств по
настоящему Договору Стороны несут имущественную ответственность в
соответствии с действующим законодательством.
102
8.2. Стороны освобождаются от ответственности за неисполнение или
ненадлежащее исполнение обязательств, принятых по настоящему
Договору, если неисполнение явилось следствием обстоятельств
непреодолимой силы (форс-мажор).
8.3. Сторона, нарушившая свои обязательства по настоящему Договору,
освобождается от ответственности за неисполнение или ненадлежащее
исполнение этих обязательств, если это нарушение было вызвано
причинами, за которые отвечает другая Сторона.
8.4. В случае возникновения споров между Лицензиаром и Лицензиатом по
вопросам, предусмотренным настоящим Договором, Стороны примут все
меры к разрешению их путем переговоров между собой. В случае
невозможности разрешения указанных споров путем переговоров они
будут разрешаться в порядке, предусмотренном действующим
законодательством.
9. Срок действия Договора и условия его расторжения
9.1. Настоящий Договор заключен на срок 2 года и вступает в силу с даты его
подписания обеими Сторонами.
9.2. По истечении срока действия настоящего Договора Лицензиат вправе
использовать ПрЭВМ, включая усовершенствованные варианты, на
Производственной площадке на любом количестве Рабочих мест. При
этом обязательства Лицензиата, предусмотренные пп. 7.1 и 7.2
настоящего Договора, сохраняются бессрочно.
9.3. Действие настоящего Договора по обоюдному согласию Сторон может
быть досрочно прекращено, но не ранее чем через три месяца после
предложения об этом одной из Сторон. При этом Лицензиат не
освобождается от обязательств по платежам, возникшим до расторжения
настоящего Договора.
9.4. Настоящий Договор может быть досрочно расторгнут в одностороннем
порядке со стороны Лицензиара из-за невыполнения Лицензиатом своих
обязательств по пп. 7.1 или 7.2. В этом случае Лицензиат лишается права
дальнейшего использования ПрЭВМ в любой форме и обязан вернуть ее
Лицензиару.
9.5. Если Лицензиат откажется от дальнейшего использования ПрЭВМ, то он
уничтожит все имеющиеся у него копии ПрЭВМ.
10. Заключительные положения
103
10.1. Все изменения и дополнения к настоящему Договору действительны
только в тех случаях, если они совершены в письменной форме и
подписаны обеими Сторонами.
10.2. Стороны не имеют права передавать свои права и обязательства по
настоящему Договору третьим лицам без письменного согласия на то
другой Стороны.
10.3. Во всем остальном, что не предусмотрено условиями настоящего
Договора, будут применяться нормы законодательства Российской
Федерации.
11. Адреса Сторон
11.1. ЛИЦЕНЗИАР: ОАО «Азимут», адрес: 197376, г.Санкт-Петербург, ул.
Медиков, д.5.
11.2. ЛИЦЕНЗИАТ: ФЦИ ЦИК РФ, адрес: 231000, Москва, пр. Дружбы
народов, д. 57
Настоящий Договор составлен в двух экземплярах для каждой из
Сторон и подписан "___"__________ 2010_ г. в г. Санкт-Петербурге.
ЛИЦЕНЗИАР:
Генеральный
директор
«Азимут»
___________ Г.А. Борин
ОАО
104
От ЛИЦЕНЗИАТА:
Руководитель ФЦИ ЦИК
РФ
____________ В.В. Ященко
СОСТАВ МОДУЛЯ АВТОМАТИЧЕСКОГО
ВОССТАНОВЛЕНИЯ РАБОТОСПОСОБНОСТИ САЙТА
phpsvnclient.php
-
исходный класс, использующийся
соединения с хранилищем;
xml_parser.php
-
исходный
класс,
phpsvnclient.php;
использующийся
http.php
-
исходный
класс,
phpsvnclient.php;
использующийся
install.php
-
файл, использующийся для установки
разработанного модуля, закачивающий все
исходные данные из svn и формирующий
информацию об исходных файлах сайта;
download_svn.php
-
основной модуль, реализующий процедуру
автоматического
восстановления
работоспособности
сайта
на
основе
использования
Subversion
при
несанкционированном
изменении
PHPскриптов;
conf.php
-
файл для настроек пользователя;
definitions.php
-
файл для хранения констант.
105
для
РЕФЕРАТ
Автор:
Драбек Дарья Сергеевна
Правообладатель: Открытое акционерное общество «Азимут»
Программа для ЭВМ:
Модуль для автоматического восстановления
работоспособности сайта на основе использования
Subversion при несанкционированном изменении
PHP-скриптов
Аннотация:
Программный
модуль
предназначается
для
автоматического восстановления работоспособности
сайта на основе использования Subversion при
несанкционированном изменении PHP-скриптов
Тип ЭВМ:
IBM PC/AT и совместимые с ней
ОС:
Windows 2000/NT/XP / Linux / MCBC
Язык программирования:
Объем:
PHP
40 Мбайт
106
5.4
Выводы
В данном дипломном проекте объектом охраны авторских прав
является программный продукт (программа), имеющий название «Модуль
для автоматического восстановления работоспособности сайта на основе
использования Subversion при несанкционированном изменении PHPскриптов».
Автор программы — Драбек Дарья Сергеевна. Исключительные права
на программу принадлежат открытому акционерному обществу «Азимут»,
т.к. разработка программы выполнялась по заказу работодателя.
Для регистрации программы в федеральном органе исполнительной
власти по интеллектуальной собственности подготовлен пакет документов,
который приведен ниже.
В соответствии с правами на использование программы, ОАО
“Азимут” в лице генерального директора Борина Г.А., заключило договор на
использование
(неисключительная лицензия) с Федеральным центром
информатизации при Центральной Избирательной Комиссии Российской
Федерации (ФЦИ ЦИК РФ), в лице руководителя ФЦИ ЦИК РФ Ященко В.В.
107
6 ЗАКЛЮЧЕНИЕ
В
результате
выполнения
дипломного
проекта
были
решены
следующие задачи:
1. Рассмотрены понятие Web-сайта, классификация возможных атак на
сайт и методы защиты от них.
2. Рассмотрена процедура резервного копирования Web-сайта.
3. Обосновано использование системы контроля версий в качестве
способа восстановления повреждённых файлов
4. Проведен сравнительный анализ систем контроля версий и обоснован
выбор Subversion в качестве основы для разрабатываемой системы
автоматического восстановления поврежденных файлов сайта.
5. Осуществлен
выбор
способов
обнаружения
поврежденных
или
подмененных файлов Web-сайта, рассмотрено понятие хеширования.
6. Разработан
алгоритм
автоматического
восстановления
работоспособности сайта в случае повреждения рабочих скриптов.
7. Рассмотрены преимущества языка Web-программирования PHP и
обоснован выбор его как средства для реализации разработанного
алгоритма.
8. Описан процесс реализации разработанного алгоритма, рассмотрен
итоговый результат.
9. Написано руководство пользователя для работы с разработанным
программным модулем.
10.Оценен
социальный
эффект
от
использования
разработанного
программного модуля. Отмечено, что применение разработанной
системы
способствует
уменьшению
риска
нарушения
работоспособности сайта и зависимости от «человеческого фактора».
Уменьшается риск потери клиентов, убытков для бизнеса и ухудшения
имиджа компании-владельца сайта.
108
11.Рассмотрены
вопросы
защиты
интеллектуальной
собственности.
Показано, что разработанный программный модуль и их автор имеют
право на защиту от их незаконного использования третьими лицами при
выполнении определенных условий. Проведен обзор законодательных
актов, обеспечивающих защиту прав на программу для ЭВМ.
109
7 СПИСОК ЛИТЕРАТУРЫ
1. Федеральный Закон об информации, информатизации и защите
информации.
2. Гражданский кодекс РФ.
3. Руководящий документ. Защита от несанкционированного доступа к
информации.
4. Васильев А.В. Технико-экономическое обоснование дипломных
проектов (работ). – СПб.: ГЭТУ, 2002 г.
5. Закон РФ О Безопасности №2446-1.
6. Доктрина Информационной безопасности РФ от 09.09.2000 г.
7. Фленов М. PHP глазами хакера – Спб.: «БХВ-Петербург» 2005 г.
8. Скембрей Д., Шема М. Безопасность Web-приложений.
9. Бен Коллинз-Сассман, Брайан У. Фитцпатрик, К. Майкл Пилато
Управление версиями в Subversion 2007 г.
10.Кузнецов М. PHP5 Практика разработки web-сайтов Спб.: «БХВПетербург» 2005 г.
11.Низамутдинов М. Тактика защиты и нападения на WEB-приложения
«БХВ-Петербург» 2005 г.
12.Томсон Л., Веллинг Л. Разработка Web-приложений на PHP и
MySQL«БХВ-Петербург» 2005 г.
13.Мак-Клар С.Хакинг в Web. Атаки и защита Питер 2003.
14.http://www.subversion.ru/ -Сайт о Subversion
15.www.google-code.ru – Сайт для создания репозитория
16.http://www.softtime.ru/bookphp/help.php - Справочник PHP
110
ПРИЛОЖЕНИЕ А
Листинг модуля install.php
<?php
//===========================================================================
============================================================//
//
ПЕРВАЯ ЗАГРУЗКА
//===========================================================================
============================================================//
require_once("phpsvnclient.php");
require_once("conf.php");
$phpsvnclient = new phpsvnclient($url);
//=====================1.установить
репозиторий================================================
$phpsvnclient->setRepository($url);
//=2.ДЕРЕВО файлов из "/trunk/" с подвложенными папками последней версии
//репозитория
$files_tree = $phpsvnclient->getDirectoryTree($folder_svn);
echo "<b>" ."1." . " Создание копии файлов из репозитория" . "</b>";
//3.СОЗДАНИЕ КОПИИ ФАЙЛОВ ИЗ РЕПОЗИТОРИЯ,СОЗДАНИЕ КАТАЛОГОВ И ФАЙЛОВ
//ЗАПИСЬ МАССИВА $FILES В ФАЙЛ FILES.TXT без /trunk С MD5
$i=0;
for ($n=0; $n<count($files_tree); $n++)
{
if ($files_tree[$n][type]=="file"){
$filename = $path_sait . substr($files_tree[$n][path], 6);
$full_filename = $files_tree[$n][path];
$file_content = $phpsvnclient->getFile($full_filename);
$md5_file_content = md5($file_content);
echo "<br>";
echo $i . " ";
$parts = pathinfo($filename);
//Если признак в настройках = "Создавать файлы при первой загрузке"
if ($first_create_files=='y'){
//создаем каталог
if (!is_dir($parts[dirname])){
mkdir($parts[dirname]);
echo "Создали каталог $parts[dirname]";
echo "<br>";
}
else {
echo "Каталог $parts[dirname] существует";
echo "<br>";
}
if (!is_file($filename)){
echo "<b>" ."Внимание! Файл $filename не найден в рабочем
каталоге!" . "</b>" ;
echo "<br>";
111
($handle = fopen($filename, "w+")) or die("error ");
fclose($handle);
echo "Создали файл $filename";
echo "<br>";
write_file($file_content,$filename);
echo "<br>";
}
else{
echo "Файл $filename существует";
echo "<br>";
}
}
//Добавление md5 в массив files_array
$files_in =
array("md5"=>$md5_file_content,"last-mod"=>$files_tree[$n]['last-mod']);
$files_array[$filename]=$files_in;
$i=$i+1;
}
}
file_put_contents('files.txt', serialize($files_array));
echo "<br>"."<b>"."2. Записали файл files.txt"."<br>"."</b>";
echo "Массив files_array:";
echo "<pre>\n";
print_r($files_array);
echo "</pre>\n";
function write_file($file_content,$filename)
{
$somecontent = $file_content;
// Вначале убедимся, что файл существует и доступен для записи.
if (is_writable($filename)) {
if (!$handle = fopen($filename, 'w+')) {
echo "Не могу открыть файл ($filename)";
exit;
}
// Записываем $somecontent в открытый файл.
if (fwrite($handle, $somecontent) === FALSE) {
echo "Не могу произвести запись в файл ($filename)";
exit;
}
echo " Записали
файл ($filename)";
fclose($handle);
return true;
} else {
echo "Файл $filename недоступен для записи";
}
}
?>
112
ПРИЛОЖЕНИЕ Б
Листинг модуля download.php
<?php
//===========================================================================
============================================================//
//
ПОСТОЯННАЯ ЗАГРУЗКА
//===========================================================================
============================================================//
require_once("phpsvnclient.php");
require_once("conf.php");
//===============================================================//
// НЕПОСРЕДСТВЕННОЕ ОБНОВЛЕНИЕ ФАЙЛОВ ИЗ SVN
//============================================================//
$phpsvnclient = new phpsvnclient($url);
$phpsvnclient->setRepository($url);
//==================== 2.ДЕРЕВО файлов из "/trunk/" с подвложенными папками
//
последней версии репозитория
$files_tree = $phpsvnclient->getDirectoryTree($folder_svn);
$i=0;
for ($n=0; $n<count($files_tree); $n++)
{
if ($files_tree[$n][type]=="file"){
echo "<br>";
echo "<b>".$i ." ". "</b>";
$filename = $path_sait . substr($files_tree[$n][path], 6);
$full_filename = $files_tree[$n][path];
$file_content = $phpsvnclient->getFile($full_filename);
$parts = pathinfo($filename);
//3.создаем каталог если не существует
if (!is_dir($parts[dirname])){
mkdir($parts[dirname]);
echo "Создали каталог $parts[dirname]";
echo "<br>";
//logs.txt
$message =
date("d.m.Y h:i:s A") . " " . "Создали
каталог $parts[dirname]" . "\r\n";
write_logs($message);
}
else {
echo "Каталог $parts[dirname] существует";
echo "<br>";
}
//4.Если не существует файл тогда создаем и изменяем files.php
if (!is_file($filename)){ //существует ФАЙЛ
echo "<b>" ."Внимание! Файл $filename не найден в рабочем
каталоге!" . "</b>" ;
echo "<br>";
($handle = fopen($filename, "w+")) or die("error ");
113
fclose($handle);
echo "Создали файл $filename";
echo "<br>";
//logs.txt
$message =
date("d.m.Y h:i:s A") ." " . "Создали файл
$filename. "." Записали файл ($filename)"."\r\n";
write_logs($message);
write_file($file_content,$filename);
$files_in = array("md5"=>md5($file_content),"lastmod"=>$lastmod_files_tree);
$files_array[$filename]=$files_in;
file_put_contents('files.txt', serialize($files_array));
echo "<br>";
}
else //5. СУЩЕСТВУЕТ файл
{
echo "Файл $filename существует";
echo "<br>";
//5.1 Если Время изменения не такое как в файле files.php
//перезаписываем $filename и в files.txt изменяем md5
$str = file_get_contents('files.txt');
$files_array = unserialize($str);
$lastmod_files_tree = $files_tree[$n]['last-mod'];
$lastmod_files_array = $files_array[$filename]['last-mod'];
if ($lastmod_files_tree <> $lastmod_files_array){
echo "Время изменения отличается, перезаписали last-mod и
md5 в files.txt ";
echo "<br>";
//logs.txt
$message =
date("d.m.Y h:i:s A") ." " . "Время изменения
отличается, файл $filename перезаписали." . "\r\n";
write_logs($message);
write_files($file_content,$filename);
$files_in = array("md5"=>md5($file_content),"lastmod"=>$lastmod_files_tree);
$files_array[$filename]=$files_in;
file_put_contents('files.txt', serialize($files_array));
}
//5.2 Если Время изменения такое как в файле files.php
//5.2.1.Сравниваем md5_file(filename) и md5 из files.txt
else
{
echo "Время изменения не отличается";
echo "<br>";
$md5_file = md5_file($filename);
echo "md5_file(filename)=" . md5_file($filename) ."<br>";
echo "md5 files_array[filename]=
".$files_array[$filename][md5]."<br>";
if ($md5_file <> $files_array[$filename][md5]) {
echo "md5 не совпадает" ."<br>";
echo "<br>";
//logs.txt
114
$message =
date("d.m.Y h:i:s A") . " " . "Контрольная
сумма файла $filename не совпадает с исходным. Перезаписали
файл $filename."."\r\n";
write_logs($message);
write_files($file_content,$filename);
echo "md5_file(filename)=" . md5_file($filename)."<br>";
echo "md5
files_array[filename]=".$files_array[$filename][md5]."<br>";
}
else{
echo "md5 совпадает";
echo "<br>";
echo "<br>";
}
}
}
$i=$i+1;
}
}
function write_file($file_content,$filename)
{
$somecontent = $file_content;
// Вначале давайте убедимся, что файл существует и доступен для
записи.
if (is_writable($filename)) {
if (!$handle = fopen($filename, 'w+')) {
echo "Не могу открыть файл ($filename)";
exit;
}
// Записываем $somecontent в наш открытый файл.
if (fwrite($handle, $somecontent) === FALSE) {
echo "Не могу произвести запись в файл ($filename)";
exit;
}
echo " Записали
файл ($filename)";
fclose($handle);
return true;
} else {
echo "Файл $filename недоступен для записи";
}
echo "<br>";
}
function write_files($file_content,$filename){
($handle = fopen($filename, "w+")) or die("error Даша");
fclose($handle);
echo "Создали файл $filename";
echo "<br>";
write_file($file_content,$filename);
115
//echo "Записали файл $parts[basename]";
echo "<br>";
echo "<br>";
}
function write_logs($file_content){
$filename = 'logs.txt';
($handle = fopen($filename, "a+")) or die("error Даша");
fclose($handle);
$somecontent = $file_content;
// Вначале убедимся, что файл существует и доступен для записи.
if (is_writable($filename)) {
if (!$handle = fopen($filename, 'a+')) {
echo "Не могу открыть файл ($filename)";
exit;
}
// Записываем $somecontent в наш открытый файл.
if (fwrite($handle, $somecontent) === FALSE) {
echo "Не могу произвести запись в файл ($filename)";
exit;
}
echo " Записали
файл ($filename)";
fclose($handle);
return true;
} else {
echo "Файл $filename недоступен для записи";
}
echo "<br>";
}
?>
116
Документ
Категория
Компьютеры, Программирование
Просмотров
347
Размер файла
3 161 Кб
Теги
1/--страниц
Пожаловаться на содержимое документа