Главная страница
Навигация по странице:

  • 2.4. Решение проблемы авторизации

  • 2.5. Разработка графического пользовательского интерфейса

  • 2.6. Реализация вывода результатов работы программы

  • 3. ТЕХНОЛОГИЧЕСКАЯ ЧАСТЬ 3.1. Выбор и обоснование стека используемых технологий 3.1.1. Selenium WebDriver

  • 3.1.2. Графическая библиотека JavaFX

  • 3.2. Инструкция по эксплуатации программы

  • 3.3. Результаты работы программы

  • 3.4. Сравнение с аналогами

  • СПИСОК ЛИТЕРАТУРЫ

  • Ddos атака. Инструкция по эксплуатации программы. В заключении представлены развернутые выводы по данной работе


    Скачать 1.22 Mb.
    НазваниеИнструкция по эксплуатации программы. В заключении представлены развернутые выводы по данной работе
    АнкорDdos атака
    Дата23.11.2022
    Размер1.22 Mb.
    Формат файлаpdf
    Имя файла2015_Kochetkov_P_rpz.pdf
    ТипИнструкция
    #807338
    страница3 из 3
    1   2   3
    2.3. Реализация многопоточности
    Одним из пунктов технического задания является параллельное проведение проверки в нескольких открытых окнах браузера. Для выполнения этой задачи было принято решение использовать многопоточность.
    Данная работа требует параллельного выполнения большого количества коротких задач.
    Одной из упрощенных моделей для построения такой системы

    36 является создание нового потока каждый раз, когда запрос прибывает и обслуживание запроса в этом новом потоке. Этот подход в действительности хорош для разработки прототипа, но имеет значительные недостатки.
    Один из недостатков подхода "поток-на-запрос" состоит в том, что системные издержки создания нового потока для каждого запроса значительны.
    Программа будет тратить больше времени и потреблять больше системных ресурсов, создавая и разрушая потоки, чем время и ресурсы непосредственно на выполнение задач. В дополнение к издержкам создания и разрушения потоков, активные потоки потребляют системные ресурсы. Создание слишком большого количества потоков в одной JVM (виртуальной Java-машине) может привести к нехватке системной памяти или пробуксовке из-за чрезмерного потребления памяти. Для предотвращения пробуксовки ресурсов, серверным приложениям нужны некоторые меры по ограничению количества запросов, обрабатываемых в заданное время. [1].
    Для устранения проблемы издержек жизненного цикла потока, и проблемы пробуксовки ресурсов было решено использовать пул потоков (thread pool). Пул потоков подразумевает многократное использовании потоков для решения многочисленных задач. В качестве бонуса, поскольку поток уже существует, когда прибывает запрос, задержка, произошедшая из-за создания потока, устраняется. Таким образом, запрос может быть обработан немедленно, что делает приложение более быстрореагирующим.
    2.4. Решение проблемы авторизации
    Авторизация - предоставление определённому лицу или группе лиц прав на выполнение определённых действий; а также процесс проверки
    (подтверждения) данных прав при попытке выполнения этих действий. [10]
    Большинство web-приложений предоставляют, мягко говоря, ограниченный интерфейс для неавторизованных пользователей. Зачастую, предоставляется

    37 только одна страница авторизации, с возможностью перейти на страницу регистрацию.
    Безусловно, чтобы обеспечить безопасность приложения недостаточно проанализировать только лишь страницу авторизацию. А менять ради тестирования логику web-приложения противоречит основным принципам тестирования, не говоря уже о больших неудобствах для разработчика. Таким образом, нужно предоставить пользователю XSS-Scanner возможность авторизоваться в системе.
    Для этого было решено после открытия браузера задержать начала проверки на 30 секунд, чтобы дать возможность пользователю авторизоваться в системе, если пользователь поставит для этого соответствующий флаг во входных данных. Но здесь появляется новая проблема. XSS-Scanner поддерживает параллельный анализ приложения на уязвимости в нескольких окнах браузера. Если их количество окон браузера превышает три, то вводить вручную логин и пароль для каждого окна становится обременительным.
    Эта проблема также была решена. Поскольку, все данные, необходимые серверу для опознания пользователя хранятся в http-cookie, то достаточно скопировать cookie авторизованного пользователя в другие окна браузера.
    Selenium WebDriver предоставляет такую возможность. В классе WebDriver содержится два метода Cookie getCookie() и void setCookie(Cookie). Так, после авторизации пользователя в одном окне браузера, у объекта webDriver, отвечающего за это окно вызываем метод getCookie(), которые возвращает нам cookie, содержащие информацию о сессии. После чего, вызывавается webDriver.setCookie(cookie) у webDriver’ов, которые отвечают за остальные открытые браузерные окна, тем самым сессия передается во все доступные окна.
    Важно отметить, что такой метод работает даже если в http-заколовке Set-
    Cookie стоит флаг httponly, означающие, что доступ к http-cookie невозможен из javascript.

    38
    2.5. Разработка графического пользовательского интерфейса
    На сегодняшний день, предоставление пользователям графического интерфейса является осознанной необходимостью. Приложения, не обладающие GUI, являются сложными в освоении и пользовании, и, вследствие чего, редко получают широкое распространение.
    Техническое задание включало пункт создания графического пользовательского интерфейса. Для удобства и быстроты создания был. использован визуальный инструмент JavaFX Scene Builder, предоставляемый
    IDE Intellij Idea. С помощью JavaFX Scene Builder было создано два основных элемента AnchorPane, которые соответствуют двум фазам работы приложения: подготовительной (ввод данных) и фазой активной работы. Для каждой панели были добавлены элементы для ввода входных данных, отображения ошибок при неправильном вводе данных и текущей стадии работы программы.
    Перед запуском тестирования все формы ввода проверяются на корректность. Например, для поля ввода URL написано специальное регулярное выражение, позволяющее отследить неверный формат.
    2.6. Реализация вывода результатов работы программы
    В соответствии с техническим заданием, отчет о проведенной проверке создается в формате html и представляет собой web-страницу для просмотра в браузере.
    Для этих целей был подготовлен шаблон с использованием языка разметки html, языка программирования javascript и таблиц стилей css. Для того, чтобы интерфейс страницы отчета был более отзывчивым и простым в разработке была использована открытая библиотека jQuery и плагин jQuery.StickyHeader, позволяющий заголовкам таблиц всегда находится на странице.

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

    40
    3. ТЕХНОЛОГИЧЕСКАЯ ЧАСТЬ
    3.1. Выбор и обоснование стека используемых технологий
    3.1.1. Selenium WebDriver
    Selenium – это проект, в рамках которого разрабатывается серия программных продуктов с открытым исходным кодом (open source):

    Selenium WebDriver,

    Selenium RC,

    Selenium Server,

    Selenium Grid,

    Selenium IDE.
    Selenium предоставляет максимально полный набор инструментов для удобной и эффективной функциональной проверки Web-приложения. Selenium поддерживает кластеризацию, что позволяет проводить параллельную проверку в различных устройствах, в разных браузерах.
    Selenium WebDriver – это программная библиотека для управления браузерами. Часто употребляется также более короткое название WebDriver.
    Иногда говорят, что это «драйвер браузера», но на самом деле это целое семейство драйверов для различных браузеров, а также набор клиентских библиотек на разных языках, позволяющих работать с этими драйверами.
    Это основной продукт, разрабатываемый в рамках проекта Selenium.
    Selenium WebDriver называется также Selenium 2.0, причина этого будет объяснена ниже.
    Как уже было сказано, WebDriver представляет собой семейство драйверов для различных браузеров плюс набор клиентских библиотек для этих драйверов на разных языках программирования (рис. 2).

    41
    Рисунок 2 – Структура проекта Selenium
    В рамках проекта Selenium разрабатываются драйверы для браузеров
    Firefox, Internet Explorer и Safari, а также драйверы для мобильных браузеров
    Android и iOS. Драйвер для браузера Google Chrome разрабатывается в рамках проекта Chromium, а драйвер для браузера Opera (включая мобильные версии) разрабатывается компанией Opera Software. Поэтому они формально не являются частью проекта Selenium, распространяются и поддерживаются независимо. Но логически, конечно, можно считать их частью семейства продуктов Selenium.
    С помощью Selenium WebDriver можно управлять открытыми браузерными окнами, дожидаться полной загрузки страницы и исполнять javascript код в открытом браузерном окне. Таким образом, Selenium WebDriver обладает всеми необходимыми качествами для использования в рамках данного приложения. Немаловажным является тот факт, что продукт является бесплатным с открытым исходным кодом. [6]

    42
    Более того, использование Selenium дает возможность дальнейшего развития проекта путем введения кластеризации и поддержки параллельной проверки на нескольких компьютерах, в разных браузерах, что увеличивает качество проверки.
    3.1.2. Графическая библиотека JavaFX
    Для создания графического интерфейса была выбрана библиотека
    JavaFX. В JavaFX для отрисовки используется графический конвейер, что значительно ускоряет работу приложения. Набор встроенных компонентов обширен, есть даже отдельные компоненты для отрисовки графиков.
    Реализована поддержка мультимедийного контента, множества эффектов отображения, анимации и даже мультитач. Внешний вид всех компонентов можно легко изменить с помощью CSS-стилей. Также, в JavaFX входит набор утилит, которые позволяют сделать родной инсталлятор для самых популярных платформ: exe или msi для Windows, deb или rpm для Linux, dmg для Mac. На сайте Oracle можно найти подробную документацию и огромное количество готовых примеров. Это превращает программирование с JavaFX в легкое и приятное занятие. [5]
    Достоинства:

    быстрая работа за счет графического конвейера;

    множество различных компонентов;

    поддержка стилей;

    утилиты для создания установщика программы;

    приложение можно запускать как десктопное и в браузере как часть страницы.
    Важным преимуществом JavaFX является наличие в IDE
    Inteliji Idea инструмента JavaFX Scene Builder, который позволяет разработчикам быстро проектировать пользовательские интерфейсы приложений JavaFX с помощью графической оболочки. Разработчики могут перетаскивать компоненты пользовательского интерфейса в

    43 рабочей зоне, изменять их свойства, применять таблицы стилей и код
    FXML для верстки, которые автоматически генерируется в фоновом режиме. Результатом работы JavaFX Scene Builder является файл FXML, который затем объединяется с проектом путем связывания пользовательского интерфейса и логике приложении
    . [7]
    3.2. Инструкция по эксплуатации программы
    Для удобства использования был разработан пользовательский графический интерфейс. Таким образом, разработанное приложение не требует специальных навыков.
    Перед запуском тестирование web-приложения необходимо корректно заполнить имеющиеся формы, среди которых:

    Текстовое поле ввода типа TextField, посредсвом которого определяется URL, по которому будет производится проверка

    Группа элементов типа radio, посредством которой осуществляется выбор построения карты сайта и полного тестирания всего web-приложения или тестирования только лишь указанного URL.

    Элемент типа Spinner, способный принимать только целые положительные значения. Значение этого элемента определяет количество браузеров, в которых будет проходить параллельная проверка. Следует внимательно отнестись к выбору количества браузеров. От этого существенно зависит скорость проведения тестирования.

    Элемент типа ComboBox, способный принимать три значения:
    «Поверхностный», «Средний», «Глубокий». Значение этого элемента определяет глубину поиска, иными словами, количество

    44 xss-инъекций, которое будет введено в каждую форму для осуществления проверки.

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

    Элемент типа CheckBox. Его значение определяет необходимость предварительной авторизации в системе. Значение true, означает, что перед началом тестирования пользователю будет предоставлено 30 секунд на авторизацию. Значение false, означает, что система сразу после запуска начнет тестирование приложения на наличие xss-уязвимостей.

    Элемент типа Button, со значением «Начать». При нажатии на этот элемент, запускается анализатор форм, с целью определить корректность введенных данных. Если данные некорректны, в графическом интерфейсе будет выведено соответствующее сообщение. Если же данные корректны, то запустится процесс тестирования.
    Интерфейс программы изображен на рис. 3.

    45
    Рисунок 3 - Интерфейс программы
    После успешного ввода данных и запуска тестирования начнут открываться окна браузера, в количестве, указанном количестве. Если стоял флаг авторизации, то изначально, будет открыто всего одно окно, в котором нужно будет произвести авторизацию в web-приложении.
    В течение всего времени тестирования программа отображает состояние тестирование: подготовка, составление карты сайта, поиск xss-уязвимостей, а также информацию о процессе тестирования – количество найденных уязвимостей и время, прошедшее с начала тестирования. Интерфейс программы во время тестирование представлен на рисунке 4.

    46
    Рисунок 4 - Интерфейс во время проверки
    Кроме этого, процесс тестирования можно прервать, нажав кнопку
    «Отмена». Однако в этом случае, отчет о проделанной работе не будет сформирован. Интерфейс программы в состоянии тестирования изображен на рис. 4.
    После успешного завершения проверки, экран состояния закроется, а в директории, указанной при запуске программы, появится отчет о проделанной работе в формате html и папка, с файлами javascript, таблицами стилей css и шрифтами.
    Пример отчета о проведенной проверке изображен на рис. 5.

    47
    Рисунок 5 - Пример отчета
    3.3. Результаты работы программы
    Для оценки качества работы созданного программного продукта, было решено сравнить результат его работы с продуктами, которые уже представлены на рынке и активно используются разработчиками для тестирования собственных продуктов: NetSparker(Community Edition), расширение для браузера XSS-Me, Wapiti.
    Для тестирования было выбрано несколько проектов:

    http://www.insecurelabs.org/ созданный при поддержке OWASP для закрепления навыков поиска xss-уязвимостей.

    48

    http://www.insecurelabs.org/Task, проект, состоящий из шести задач, основная цель которых обнаружить XSS-уязвимость.
    Сравнение результатов тестирования приведено в таблице 3.1.
    Таблица 3.1
    Сравнение результатов тестирования
    NetSparker
    (CE)
    XSS-ME
    Wapiti
    XSS-Scanner http://www.insecurelabs.org/
    Количество найденных уязвимостей
    2 9
    9 19
    Количество пропущенных форм
    6/7 0/7 0/7 0/7 http://www.insecurelabs.org/Task
    Количество найденных уязвимостей
    5 18 6
    32
    Количество пропущенных форм
    1/6 2/6 2/6 0/6
    Проанализировав таблицу, можно сделать вывод, что приложение, созданное в рамках данной работы, является конкурентоспособным продуктом, и, по некоторым параметрам, превосходит существующие аналоги.

    49
    3.4. Сравнение с аналогами
    Для оценки качества полученного продукта, целесообразно сравнить его по основным характеристикам с аналогичными продуктами. Сравнение с аналогами представлено в таблице 3.2.
    Таблица 3.2
    Сравнение с аналогами
    NetSparker
    (CE)
    Wapiti
    XSS-Me
    XSS-Scanner
    Наличие GUI
    +
    -
    +
    +
    Авторизация в системе
    -
    -
    +
    +
    Параллельная работа
    +
    -
    +
    +
    Составление карты сайта
    -
    +
    -
    +
    Stored XSS
    -
    +
    -
    +
    Кросс платформенность
    -
    +
    +
    +
    Итого
    2 3
    4 6
    В таблице наглядно отражены основные характеристики существующих решений и приложения XSS-Scanner, созданного в рамках данной работы. В соответствии с информацией из таблицы, XSS-Scanner имеет ряд преимуществ перед существующими решениями, что делает его по крайней мере конкурентоспособным продуктом.

    50
    ЗАКЛЮЧЕНИЕ
    В рамках данной квалификационной работы была исследована атака на
    WEB-приложения типа Cross Site Scripting. Были изучены основные принципы ее работы и приведена классификация.
    Из различных источников был собран список XSS-инъекций, посредством которого было решено проверять WEB-приложение на наличие
    XSS-уязвимостей.
    В рамках работы, были изучены существующие системы, позволяющие производить автоматизированное тестирование безопасности приложения в контексте XSS-уязвимости. Выявлены основные достоинства и недостатки этих систем.
    В соответствии с техническим заданием была создана многопоточная система автоматизированного тестирования WEB-приложения на наличие Cross
    Site Scripting с использованием проекта Selenium и Firefox WebDriver.
    Для удобства работы с приложением был разработан пользовательский графический интерфейс с использованием платформы JavaFX, позволяющий сообщать пользователю о некорректности введенных им данных, а также отражать текущее состояние работы программы.
    Также, был реализован модуль, формирующий отчет о результатах тестирования в формате HTML с использованием каскадной таблицы стилей
    (css) и языка программирования javascript.
    Для оценки качества работы приложения, было проведено тестирование двух открытых проектов OWASP. Было произведено сравнение результатов работы данного приложения с результатами работы уже существующих приложений. Приложение, разработанное в рамках квалификационной работы, показало отличный результат, по многих параметрам опередив существующие решения.

    51
    СПИСОК ЛИТЕРАТУРЫ
    1. Brian Goetz. Java theory and practice: Thread pools and work queues. [Текст] /
    Brian Goetz // IBM. DeveloperWorks. – 2002. – №7.
    – с. 7.
    2. Межсайтовый скриптинг [Электронный ресурс] // Свободная энциклопедия
    Википедия
    URL: https://ru.wikipedia.org/wiki/Межсайтовый_скриптинг (дата обращения:
    11.06.2015).
    3.
    OWASP Cheat Sheet Series [Электронный ресурс] //
    OWASP the free and open software security community
    URL: https://www.owasp.org/index.php/OWASP_Cheat_Sheet_Series
    (дата обращения: 25.05.2015).
    4. Статистика уязвимостей ВЕБ-приложений (2013 год) [Электронный ресурс]
    // Positive Technologies
    URL:http://www.ptsecurity.ru/download/PT_Web_application_vulnerability_2014_r us.pdf (дата обращения: 05.06.2015).
    5. GUI на Java [Электронный ресурс] // «Хакер»
    URL: https://xakep.ru/2014/09/10/java-gui/ (дата обращения: 05.05.2015).
    6. Что такое Selenium [Электронный ресурс] // Хабрахабр
    URL: http://habrahabr.ru/post/152653/ (дата обращения: 13.04.2015).
    7. Using Scene Builder with IntelliJ IDEA [Электронный ресурс] // Java documentation
    URL:http://docs.oracle.com/javafx/scenebuilder/1/use_java_ides/sb-with-intellij.htm
    (дата обращения: 10.04.2015).
    8. Карта сайта [Электронный ресурс] // Свободная энциклопедия Википедия
    URL: https://ru.wikipedia.org/wiki/Карта_сайта (дата обращения: 15.04.2015).

    52 9. Статистика уязвимостей ВЕБ-приложений (2012 год) [Электронный ресурс]
    // Positive Technologies
    URL: http://www.ptsecurity.ru/download/analitika_web.pdf (дата обращения
    15.05.2015).
    10. Авторизация [Электронный ресурс] // Свободная энциклопедия Википедия
    URL: https://ru.wikipedia.org/wiki/Авторизация (дата обращения: 18.05.2015)
    1   2   3


    написать администратору сайта