Защита информации от несанкционированного доступа

Автор работы: Пользователь скрыл имя, 05 Мая 2014 в 18:58, курсовая работа

Описание работы

В данной работе речь пойдет о сайте кафедры №402 «Радиосистемы управления и передачи информации» факультета радиоэлектроники летательных аппаратов МАИ. Основной целью при создании сайта является предоставление в текстовом, графическом и визуальном виде информации о самой кафедре, предлагаемых специальностях, преподавательском составе и научной деятельности сотрудников кафедры. В то же время большинство посетителей также интересуются тем, как проходит учебный процесс и каким образом можно связаться с руководством кафедры.

Содержание работы

Введение
Список используемых сокращений
1. Обзор основных форматов документов, размещаемых на сайте.
1.1 Форматы материалов, размещаемых на сайте.
1.2 Анализ форматов файлов, представленных на сайтах различных институтов.
2. Анализ потенциальных уязвимостей материала, размещенного на сайте.
2.1 Возможные угрозы сайтам.
2.2 Потенциальные уязвимости материалов, публикуемых на сайте.
3. Анализ методов защиты содержимого сайта от несанкционированного использования.
3.1 Защита с помощью специализированного программного кода.
3.2 Защита с использованием методов шифрования.
3.3 Защита с использованием методов стеганографии.
3.4 Сравнительный анализ рассмотренных методов защиты данных, выложенных на сайте.
4. Создание механизмов защиты данных, представленных на сайте.
4.1 Использование водяного знака для защиты изображений.
4.2 Защита динамических изображений и видеофайлов.
4.3 Защита гипертекстовых материалов.
5. Разработка php-скрипта для защиты данных, публикуемых на сайте.
5.1 Создание скрипта для добавления водяного знака на изображение.
5.2 Внедрение скрипта в систему управления содержимого сайта кафедры.
6. Экономическая часть.
7. Охрана труда.
Заключение
Библиография

Файлы: 1 файл

карпухинДиплом_ф.doc

— 3.20 Мб (Скачать файл)

$picture_height = $Image_height;

}

  1. Устанавливать степень прозрачности логотипа (от 0% до 100%).

//степень прозачности  цвз

$alpha_level = 25;

  1. В случае выбора опции добавления водяного знака, функция изменяет размеры изображения и логотипа и наносит последний на изображение.

$picture = AddWatermark($Im);

  1. В противном случае происходит только изменение размера изображения.

$picture = Resize ($image);

Полный код программы представлен в Приложении 2.

Результат исполнения данной программы показан на рис. 5.8 – 5.9.

Рис. 5.8 Исходное изображение.

 

Рис. 5.9 Обработанное изображение.

 

5.1.2 Текстовые  данные.

Для реализации внедрения данных в текстовую последовательность была написана следующая программа.

  • Пользовательский интерфейс

<html>

<head><title></title></head>

<body>

<br>

<br>

<align = "center"><center>

Выберите действие:

<form method="POST" action="hide.php">

<input type="submit" value="Скрыть">

</form>

<form method="POST" action="text.php">

<input type="submit" value="Извлечь">

</form>

</center>

</body>

</html>

 

Результат выполнения данного кода показан на рис. 5.10.

Рисунок 5.10 Пользовательский интерфейс.

 

Этот код позволяет выбрать пользователю действие: скрыть данные в тексте или извлечь скрытие данные из текста. Скрываемые данные также задаются пользователем.

  • Скрытие данных в тексте

При размещении на сайте текст может быть отформатирован различными способами. Скрытие данных в моей программе происходит путем добавления пробелов после каждого слова. Причем «1» соответствуе два добавочных пробела, а «0» - один.

Алгоритм скрытия данных состоит из следующих шагов:

    1. Разбиение исходного текста на слова и подсчет количества слов.

//введенный текст

$mass = $_POST['Article'];

//разбиваем текст на  слова

$str = explode(" ", $mass);

//количество слов 

$i = count($str);

    1. Перевод скрываемых данных в двоичный формат.

//автор - скрываемый текст

$hide = $_POST['Autor'];

//перевод внутренней информации  в бинарный код ASCII

//длина строки

$lim = strlen($hide);

//в 10 системе

$arr_hide = str_split($hide);

//в 2 системе

for ($q=0; $q<=$lim; $q++){

$arr_asc[$q] = ord($arr_hide[$q]);

$bin_hide[$q] = decbin($arr_asc[$q]);

while(strlen($bin_hide[$q])<8){ $bin_hide[$q] = "0" . $bin_hide[$q];}

$b_hide .= $bin_hide[$q];

}

    1. Добавление пробелов после слов текста.

Скрываемые данные преобразованы в битовый поток, в зависимости от значения текущего бита добавляется либо один (соответствует «0»), либо два (соответствует «1») пробела.

if($b_hide[$w] == "1")

{

$MESSAGE .= $str[$j][$k]."   ";

}

else

{

$MESSAGE .= $str[$j][$k]. "  ";

}

Полный программный код представлен в Приложении 3.

Результат исполнения данной программы показан на рис. 5.11 – 5.12.

Рис. 5.11 Исходные данные для процесса скрытия данных в текстовом файле.

 

Рис. 5.12 Обработанный текст, содержащий в себе скрытые данные.

 

Именно в таком виде данные будут размещены на сайте. В случае нехватки объема для внедрения скрытых данных программа выдаст следующее сообщение (рис. 5.13):

Рис. 5.13 Сообщение об ошибке.

 

В дальнейшем можно будет выделить скрытые даннные (рис. 5.14).

Рис. 5.14 Исходный текст и скрытые данные, полученные после извлечения.

 

5.2ВНЕДРЕНИЕ СКРИПТА В СИСТЕМУ УПРАВЛЕНИЯ СОДЕРЖИМОГО САЙТА КАФЕДРЫ

    • Обработка графических данных

Как было отмечено ранее, для загрузки изображений на сайте используется СMS, включающая редактор CKЕditor совместно с файловым менеджером CKFinder.

В состав CKFinder входят несколько плагинов, одним из которых является «Waretmark». В результате исполнения этого плагина происходит добавление на изображение логотипа CKFinder (рис. 5.15). По умолчанию данный плагин отключен.

Рисунок 5.15 Логотип CKFinder.

 

Для решения поставленной нами задачи – внедрения процесса нанесения водяного знака на загруженное изображение – необходимо произвести следующие действия:

  1. Подключить плагин (только в этом случае он будет исполняться).

Для этого надо записать в конфигурационный файл CKFinder (../localhost/www/c-panel/ckfinder/config.php) следующую строку:

include_once "plugins/watermark/plugin.php";

  1. Заменим содержимое плагина (вставим рассмотренную выше функцию обработки изображения AddWatermark()).

Новое содержание плагина Watermark (../localhost/www/c-panel/ckfinder/plugins/watermark/plugin.php):

<?php

class Watermark

{

    function onAfterFileUpload($currentFolder, $uploadedFile, $sFilePath)

    {

        global $config;

        $watermarkSettings = $config['Plugin_Watermark'];

        $this->createWatermark($sFilePath, $watermarkSettings['source']);

        return true;

    }

    function createWatermark($sourceFile, $watermarkFile)

    {

        if (!file_exists($watermarkFile)) {

            $watermarkFile = dirname(__FILE__) . "/" . $watermarkFile;

        }

        if (!file_exists($watermarkFile)) {

            return false;

        }

        $watermarkImageAttr = @getimagesize($watermarkFile);

        $sourceImageAttr = @getimagesize($sourceFile);

        if ($sourceImageAttr === false || $watermarkImageAttr === false) {

            return false;

        }

//размеры фото

$Image_width = $sourceImageAttr[0];

$Image_height = $sourceImageAttr[1];

//размеры логотипа

$Logo_width = $watermarkImageAttr[0];

$Logo_height = $watermarkImageAttr[1];

//степень прозачности цвз

$alpha_level = 25;

//максимальные размеры  фото

$max_width = 640;

//$max_height = 480;

//проверяем размеры фото 

if ( $Image_width > $max_width || $Image_height > $max_height) {

$picture_width = $max_width;

$picture_height = $max_width * $Image_height / $Image_width;

}

else{

$picture_width = $Image_width;

$picture_height = $Image_height;

}

            $oWatermarkImage = @imagecreatefrompng($watermarkFile) ; //$myLogo

$oImage = @imagecreatefromjpeg($sourceFile) ;  //myImage

 

if (isset($ermsg) || false === $oImage || false === $oWatermarkImage) {

            return false;

        }       

//изменяем размеры фото 

$myPicture = imagecreatetruecolor($picture_width, $picture_height);

imagecopyresampled($myPicture, $oImage, 0, 0, 0, 0, $picture_width, $picture_height, $Image_width, $Image_height);

//подгоняем цвз под размер фото

$myWatermark = imagecreatetruecolor($picture_width, $picture_height);

imagecopyresampled($myWatermark, $oWatermarkImage, 0, 0, 0, 0, $picture_width, $picture_height, $Logo_width, $Logo_height);

//размещаем цвз на фото

imagecopymerge($myPicture, $myWatermark, 0, 0, 0, 0, $picture_width, $picture_height, $alpha_level);

$quality = 50;

imagejpeg($myPicture, $sourceFile, $quality);

imageDestroy($oImage);

        imageDestroy($oWatermarkImage);

    }

}

$watermark = new Watermark();

$config['Hooks']['AfterFileUpload'][] = array($watermark, 'onAfterFileUpload');

if (empty($config['Plugin_Watermark']))

{

    $config['Plugin_Watermark'] = array(

        "source" => "cvzz.png", ////изменила файл

        "marginRight" => 5,

        "marginBottom" => 5,

        "quality" => 100,

        "transparency" => 100,

    );

}

  1. Проверим работу отредактированного плагина.

Изображение водяного знака представлено на рис. 5.16.

Рис. 5.16 Изображение водяного знака для использования на сайте кафедры № 402.

 

После изменения кода загрузка изображения происходит следующим образом:

  • выбор пользователем изображения;
  • отправка изображения на сервер (рис. 5.17);
  • обработка изображения (нанесение ЦВЗ, обрезка в случае необходимости)
  • предоставление пользователю возможности отредактировать изображение (рис. 5.18);
  • размещение изображения на сайте (рис. 5.19);

Рис. 5.17 Отправка изображения на сервер.

 

Рис. 5.18 Предоставление пользователю возможности отредактировать изображение.

 

Рис. 5.19 Размещение изображения на сайте.

 

    • Обработка текстовых данных

Система управления содержимом сайта кафедры №402 включает текстовый редактор CKEditor. За обработку текстовых данных в нем отвечает плагин «pastetext» (…\localhost\www\c-panel\ckeditor\plugins\pastetext). В целях внедрения нашего метода скрытия данных в гипетекст необходимо отредактировать этот плагин. В качестве внедряемых данных выступает фраза «ФРЕЛА МАИ».

Новое содержание плагина, добавляющего текст на сайт (…\localhost\www\c-panel\ckeditor\plugins\pastetext\dialogs\pastetext.js):

(function()

{

CKEDITOR.dialog.add( 'pastetext', function( a )

{

return {

title : a.lang.pasteText.title,

 

minWidth : CKEDITOR.env.ie && CKEDITOR.env.quirks ? 368 : 350,

minHeight : 240,

 

onShow : function()

{

this.getContentElement('general','content').getInputElement().setValue('');

},

 

onOk : function()

{

var b = this.getContentElement('general','content').getInputElement().getValue(),

      c = this.getParentEditor();

 

//ФРЕЛА МАИ в двоичной  системе исчисления

var hide = new Array (1,1,0,1,0,1,0,0,1,1,0,1,0,0,0,0,1,1,0,0,0,1,0,1,1,1,0,0,1,0, 1,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,0,0,1,1,0,0,1,1,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0);

//длина внедряемого потока  бит

var i_hide = hide.length;

//разделение исходного  текста на слова

var arr = b.split( " " );

//длина слова

var i_arr = arr.length;

//массив, для хранения  обработанных слов

var new_arr = new Array();

//переменная для обработанного  текста

var text = "";

var q_hide = 0;

//добавление пробелов  в конце слов

for ( var i = 0 ; i <= max; i++ )

{

if ( hide[q_hide] == "1" ) {new_arr[i] = arr[i]. concat("   ");}

else { new_arr[i] = arr[i]. concat("  "); }

 

q_hide++;

}

//соединение слов в  строку

for ( var i = 0 ; i <= max; i++ )

{

text = text. concat (new_arr[i]);

}

setTimeout(function()

{

c.fire('paste',{text : text});

}, 0 );

},

contents :

[

{

label : a.lang.common.generalTab,

id : 'general',

elements :

[

{

type : 'html',

id : 'pasteMsg',

html : '<div style="white-space:normal;width:340px;">'+a.lang.clipboard. pasteMsg+'</div>'

},

{

type:'textarea',

id:'content',

className:'cke_pastetext',

 

onLoad : function()

{

var b = this.getDialog().getContentElement('general','pasteMsg').getElement(),

      c = this.getElement().getElementsByTag('textarea').getItem(0);

Информация о работе Защита информации от несанкционированного доступа