
- •Содержание
- •Введение
- •1 Анализ литературы по теме дипломного
- •1.1 Анализ направления разработки при создания интегрированных пс и средств генерации веб-страниц.
- •1.2 Анализ существующих программных средств
- •1.3 Постановказадачи на дипломное проектирование
- •2 Методыи модели, положенные в основу
- •2.1 Разработкафункциональной модели
- •2.2 Разработкаспецификаций требований
- •2.3 Разработка информационной модели
- •3 Техническое проектирование программного
- •3.1 Разработка структурной схемы программного средства
- •3.2 Схема работы программы
- •3.3 Алгоритмы обработки текстовой информации
- •3.4 Проверка корректности введённой информации на опубликованной странице
- •3.5 Выбор среды разработки
- •4 Тестирование программного средства и
- •5 Методика работы с программным средством
- •5.1 Настройка элементов управления
- •5.2 Наборы параметров для типов элементов управления
- •6 Охрана труда. Инженерно-психологическое ц обеспечение разрабатываемой модели пс.
- •7 Определение экономической эффективности цРазработки программного обеспечения
- •7.1 Определения единовременных затрат на создание программного продукта
- •7.1.2 Определение себестоимости создания пп
- •Определение оптовой и отпускной цены пп
- •Определение стоимости машиночаса работы эвм
- •7.2 Расчет показателей эффективности использования d программного продукта
- •7.2.1 Определение годовых эксплуатационных расходов при ручном решении задачи
- •7.2.2.Определение годовых текущих затрат, связанных с эксплуатацией задачи
- •Определение ожидаемого прироста прибыли в результате внедрения пп
- •7.3 Расчет показателей эффективности использования sпрограммного продукта
- •Заключение
- •Список использованных источников
3.3 Алгоритмы обработки текстовой информации
При работе данного приложения возникает момент, когда пользователю надо водить текстовую информацию. При вставке этой информации на страницу может произойти сбой работы т.к. информация может содержать инъекцию кода. Это ведет к общему снижению информации и поэтому надо вести предварительную проверку всего текста на предмет возможной инъекции. Для этих целей был формальный язык поиска – регулярные выражения. По сути регулярное выражение это строка образец, по которой происходит поиск подстроки в строке. Отличие этого метода от простого поиска это наличие метасимволов позволяющие задать формальные правила к какой либо части строки поиска.
Примеров применения регулярных выражений может послужить выражение для поиска комментариев в веденом тексте. Как известно комментарии нужны для документации кода и не следует их включать в рабочую версию страницы, так как это может помочь злоумышленникам. Если реализовать поиск комментариев через код это будет весьма трудоемко, однако при помощи регулярных выражений это можно сделать всего одной строчкой. Выражение вида «(\/\*(\w|\D)+\*\/)|(\/\/(?:[^\r\n]|\r(?!\n))*)» находит все комментарии и позволяет их удалить. На рисунке 3.4 приведен алгоритм, который описан в этом выражении.
Рисунок 3.4 – Графическое представление работы регулярного выражения.
Как видно из приведённого алгоритма выражения ищет комментарии 2 типов многострочные и однострочные. Многострочные комментарии заключаться в конструкцию вида «/*…*/» и могут содержать в себе любую информацию. Однострочные комментарии содержат в себе только 1 строку. Разработка алгоритмов анализа текста весьма трудоемка, однако регулярные выражения существенно сокращают затраты на реализацию этих алгоритмов.
Так же требовалось проверять всю введенную информацию на наличие HTMLтэгов. С учетом того что пользователь не должен вводить информацию такого типа, при её нахождение можно её сразу удалять считая вредоносной.
Для этого было разработано выражение вида «<(?:([a-zA-Z\?][\w:\-]*)(\s(?:\s*[a-zA-Z][\w:\- ]*(?:\s*=(?:\s*"(?:\\"|[^"])*"|\s*'(?:\\'|[^'])*'|[^\s> ]+))? )*)?(\s*[\/\ ?]?)|\ /([a-zA-Z][\w:\-]*)\s*|!--((?:[^\-]|-(?!->))*)--|!\[CDATA\[((?:[ ^\]]|\](?!\]>))*)\]\])>». Разбор алгоритма этого выражения приведен на рисунке 3.5.
Рисунок 3.5 – Графическое представление регулярного выражения.
Как известно, выделяться 4 типа тэгов в htmlстранице.
Двойные тэги, например: «<title></title>». Сокращённая запись двойных тэгов, например «<title/>», сокращённая запись применяется только тогда когда тэг содержит только атрибуты. Одиночный тэг, например: «<br>», этот тэг отличается от сокращённой записи двойного тэга что не имеет закрывающих символов, но при этом не имеет закрывающего тэга, и тэги мета-данных, например [CDATA].
Если не использовать регулярные выражения, то потребуется достаточно много времени на реализацию алгоритма для анализа страницы. Так же если прибегнуть к посимвольному анализу страницы, это потребует больше времени как на написание кода для анализа, так и для его выполнения по сравнению с уже отлаженным и оптимизированными алгоритмами регулярных выражений.
Как видно из приведённых примеров регулярные выражения позволяют достаточно эффективно анализировать текстовую информацию и искать потенциально вредоносный текст, а существенное сокращение сроков написание шаблонов поиска компенсирует некоторую сложность написание строк для регулярных выражений.