Тип работы:
Предмет:
Язык работы:


Обеспечение безопасности при распределенном исполнении кода на JavaScript

Работа №197661

Тип работы

Дипломные работы, ВКР

Предмет

программирование

Объем работы71
Год сдачи2018
Стоимость4800 руб.
ПУБЛИКУЕТСЯ ВПЕРВЫЕ
Просмотрено
7
Не подходит работа?

Узнай цену на написание


Аннотация
ВВЕДЕНИЕ 4
ГЛАВА 1. СИСТЕМЫ РАЗРАБОТКИ НАТИВНЫХ ПРИЛОЖЕНИЙ НА
ЯЗЫКЕ JAVASCRIPT И АНАЛИЗ ИСХОДНОГО КОДА 6
1.1. Способы исполнения JavaScript 6
1.2. Системы разработки нативных приложений на Javascript 9
1.3. Анализ исходного кода на языке JavaScript 14
1.4. Представление программы на JavaScript для анализа и обработки 17
1.5. Постановка задачи 20
1.6. Выводы 21
ГЛАВА 2. АЛГОРИТМЫ ОБЕСПЕЧЕНИЯ ВЗАИМОДЕЙСТВИЯ КЛИЕНТ-
СЕРВЕР И ГЕНЕРАЦИИ КОДА 22
2.1. Обеспечение обмена сообщениями между клиентом и сервером 23
2.2 Протокол взаимодействия между клиентом и сервером 27
2.3. Безопасность исполнения программы 29
2.4. Простейший подход к классификации операторов для тестирования
алгоритма 31
2.5. Алгоритм выделения клиентской и серверной части из исходной
программы 34
2.6. Описание модулей системы 37
2.7. Выводы 39
ГЛАВА 3. ТЕСТИРОВАНИЕ АЛГОРИТМА ГЕНЕРАЦИИ КОДА 41
3.1. Пример работы алгоритма для приложения Hash 41
3.2. Пример работы алгоритма для приложения Activity Monitor 43
3.2. Выводы 47
ЗАКЛЮЧЕНИЕ 48
БИБЛИОГРАФИЧЕСКИЙ СПИСОК 50
ПРИЛОЖЕНИЕ 1. ОПИСАНИЕ ПРОГРАММЫ 53
ПРИЛОЖЕНИЕ 2. РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ 54
ПРИЛОЖЕНИЕ 3. ИСХОДНЫЙ КОД ПРОГРАММЫ 56

В современном мире средства вычислительной техники применяются почти во всех областях деятельности человека. Чаще всего подобные системы внедряются для автоматизации монотонного, сложного труда. Чем сложнее задача автоматизации и чем серьезнее область, в которой используются компьютерные информационные технологии, тем все более и более критичными становятся такие свойства как надежность и безопасность информационных ресурсов, задействованных в процессе сбора, накопления, обработки, передачи и хранения данных[1]. Особенно остро данная проблема стоит для клиент-серверных вебприложений, так как клиентская часть исходного кода полностью доступна пользователю. Обфускация[3] в данном случае всего лишь затрудняет анализ исходного кода, и при приложении некоторых усилий злоумышленник сможет использовать и обращаться к доступным ресурсам.
Веб-приложения получили огромное распространение благодаря их кроссплатформенности и относительной легкости разработки. Браузеры, которые есть на компьютере практически каждого пользователя, позволяют сразу, без установки какого-либо стороннего программного обеспечения, открывать нужные пользователю веб-страницы, пользоваться услугами различных сервисов и получать доступ практически к любой информации. В итоге многие и крупные, и мелкие сервисы предлагают свои услуги именно в качестве веб-приложений. [4]. Основным языком при разработке веб-приложений является JavaScript. JavaScript (JS) - это полноценный динамический язык программирования, который был создан для обеспечения интерактивности на веб-сайтах. Он встроен практически во все современные браузеры. Вместе с HTML и CSS JavaScript представляет стандартную инфраструктуру для разработки сложных масштабируемых вебприложений. Примерами таких приложений являются Google Docs[6], Facebook[7] и другие. В таких приложениях JavaScript применяется для реализации сложных механизмов взаимодействия с пользователем и бизнес логики.
Основным преимуществом веб-приложений является их независимость от аппаратного окружения, на котором они запускаются - они могут запускаться в любых десктопных и мобильных операционных системах, в которых установлены современные браузеры. Кроме того, пользователям нет необходимости выполнять обновление приложения, так как при запросе страницы им будет предоставлена самая свежая версия, которая находится на сервере.
Благодаря удобству в использовании и простоте изучения JS получил широкое распространение. Разработчики начали применять данный язык и для разработки серверных компонентов. Таким образом появилась концепция Full Stack JavaScript[8]. Данный подход позволил бы людям писать как серверную, так и клиентскую часть приложения на одном и том же языке, и на серверной стороне использовать гибкость JS: процедурную и ООП парадигмы программирования вместе с функциональным стилем, а, самое главное - асинхронность и неблокирующий ввод-вывод [9].
Самой известной и эффективной реализаций серверного JavaScript является Node.js - среда исполнения JavaScript, построенная на основе JS-движка V8 [10], разработанного Google и используемого в Google Chrome. Node.js использует модель неблокирующего ввода-вывода и событийную модель управления, что позволяет достичь высокой производительности данной платформы в тех случаях, когда другие платформы ее не достигают из-за особенностей архитектуры. Кроме того, с использованием Node.js можно за короткое время создать небольшое вебприложение приложение, не тратя время на изучение множества технологий.
Дальнейшее развитие JavaScript получил в области разработки десктопных приложений. Идея использования клиент-серверной архитектуры в совокупности с JavaScript, HTML и CSS для создания элементов пользовательского интерфейса и Node.js (либо любого другого серверного JS-движка) для управления приложением и обеспечения взаимодействия с операционной системой привела к возникновению множества платформ для создания нативных кросплатформенных приложений. Примерами таких фреймворков могут служить Electron, NW.js и др.
Таким образом, стек веб-технологий, позволяет разрабатывать не только клиентскую и серверную части веб-приложений, но и десктопные приложения. Закономерным продолжением происходящих событий является создание инструмента, который позволял бы приложение для рабочего стола конвертировать в веб-приложение. Нет необходимости преобразовывать разметку страницы окна приложения, достаточно преобразовать JavaScript, выполняющийся в данном окне. Для этого необходимо создать инструмент, который выполнял бы преобразование исходного кода на языке JavaScript таким образом, чтобы результат преобразования можно было исполнять как веб-приложение. При этом допускаются небольшие правки в результате работы алгоритма для поддержания корректности исполнения программы.
Кроме того, важной является задача сокрытия некоторых данных и ресурсов от клиента. Обфускация кода не всегда является эффективной, так как при наличии достаточного времени, инструментов и терпения можно определить логику исполнения анализируемого участка. Нам же хотелось бы сокрыть эти участки, например, из-за того, что программа выполняет обращение к тем ресурсам сервера, доступ пользователя к которым нежелателен (включая чувствительные).
ГЛАВА 1. СИСТЕМЫ РАЗРАБОТКИ НАТИВНЫХ ПРИЛОЖЕНИЙ НА ЯЗЫКЕ
JAVASCRIPT И АНАЛИЗ ИСХОДНОГО КОДА
JavaScript является кроссплатформенным (можно исполнять на любой платформе, где установлен интерпретатор языка), мультипарадигменным объектно-ориентированным языком (при разработке можно использовать как функциональный, так и объектно-ориентированный стили), созданным в первую очередь для того, чтобы добавить интерактивности на веб-страницы. Является одним из трех главных компонентов разработки пользовательских интерфейсов наряду с HTML и CSS. Он был создан в 1995 г. сотрудником компании Netscape Бренданов Эйком в качестве «веб-компаньона» языка Java (что и объясняет префикс Java в названии языка). Удобство и простота его использования, низкий входной порог для его изучения и широкое распространение веб-технологий привело к тому, что данный язык стал очень популярным.

Возникли сложности?

Нужна помощь преподавателя?

Помощь в написании работ!


В рамках настоящей работы был предложен подход, который можно применять для автоматического преобразования файлов исходного кода проектов Electron приложений для рабочего стола в веб-приложения. Конвертация проектов позволит, во-первых, сэкономить большой объем ресурсов, требуемых на разработку веб-версии приложений. Во вторых, позволит избежать множества ошибок, возникающих при проектировании приложения с нуля. В третьих, получена программа, при незначительных преобразованиях которой мы получим легко масштабируемую программу, использующую все достоинства Node.js, в том числе способную обрабатывать множество одновременно поступающих запросов, и легко справляющуюся с множеством блокирующих операций.
Был разработать алгоритм, который выполняет преобразование исходного кода файлов проектов Electron на языке JavaScript и его генерацию по заданной разметке таким образом, чтобы его можно было бы исполнять на двух независимых устройствах (клиенте и сервере) в соответствии с заданным протоколом.
В ходе выполнения работы решены следующие задачи:
— Выполнен анализ существующих платформ для создания десктопных приложений при помощи веб-технологий, изучена их архитектура . Рассмотрены платформы Electron. NW.js, Apache Cordova. В качестве проектов для преобразования были выбраны проекты, разработанные на Electron
— Изучены способы представления исходного кода для анализа. Был рассмотрен статический и динамический анализ исходного кода. Изучены способы представления исходного кода в виде токенов и АСД. В результате было решено провести статический анализ исходного кода, путем исследования узлов АСД, так как данный подход позволяет легко анализировать контекст исполнения оператора и легко модифицировать исходный код.
— Разработан протокол взаимодействия, который гарантировал бы правильность исполнения преобразованной программы в двух потоках исполнения. Разработанный алгоритм в большинстве случает обеспечивает безошибочное исполнение программы.
— Разработан алгоритм генерации кода, который мог бы преобразовывать АСД исходного в соответствии с разработанным протоколом. Для алгоритма генерации кода в целях тестирования был разработан простейший принцип классификации операторов рассматриваемой программы. Каждый оператор программы оборачивается в функцию, вызов которой происходит в зависимости от узла, которому требуется ее исполнение.
— Алгоритм был протестирован на некотором наборе проектов с сайта GitHub. Сообщество Electron активно развивается, и каждый день с его помощью разрабатывается множество проектов.
Разработанный алгоритм имеет следующие ограничения:
— Отсутствует обработка функций, которые можно возвращать в качестве результата исполнения другой функции
— При наличии в проекте большого количества файлов требуется каждый файл обработать отдельно и выполнить их слияние
В будущем существует возможность интеграции разработанного алгоритма с алгоритмом разметки исходного файла, добавление автоматического объединения множества файлов.


1. Казарин О. В., Безопасность программного обеспечения компьютерных систем. Монография. - М.: МГУЛ, 2003. -212 с.
2. H. M. Kienle, "It's About Time to Take JavaScript (More) Seriously," in IEEE Software, vol. 27, no. , pp. 60-62, 2010.
3. Heiderich, M. Web Application Obfuscation: '-/WAFs..Evasion..Filters//alert(/Ob- fuscation/)-' / M. Heiderich, E.A. Vela Nava, G. Heyes, D. Lindsay. - Rockland: Syngress, 2010. - 282 p.
4. Титков, А. В. Создание веб-приложений : учебное пособие / А. В. Титков, С. А. Черепанов. — Томск : Эль Контент, 2014. — 72 с
5. JavaScript А. Вайк, Р. Вагнер, Д. Джиллиам, Ф. Ботто. - Киев: ТИД ДС, 2001. - 458 с. ил.
6. Closure Library|Google Developers [Электронный ресурс]. - Режим доступа: https://developers.google.com/apps-script/overview, свободный - Дата обращения 02.06.2018
7. Facebook SDK для JavaScript [Электронный ресурс]. - Режим доступа: https://developers.facebook.com/docs/javascript, свободный - Дата обращения 02.06.2018
8. Anuj Adhikari, Full Stack JavaScript: Web Application Development with
MEAN, [Электронный ресурс]. - Режим доступа:
https://www.theseus.fi/bitstream/handle/10024/116597/ThesisAA.pdf7sequenceM , свободный - Дата обращения 29.05.2018
9. Гудман, Д., Моррисон М. JavaScript. Библия пользователя - JavaScript. Bible / Денни Гудман (Danny Goodman), Майкл Моррисон (Michael Morrison); пер. с англ. И. В. Василенко. — 5-е изд. — Москва, Санкт-Петербург, Киев: Дилектика, 2006. — С. 3, 26. — 1184 с
10.Iyer, Ganesh Node.js: Event-driven Concurrency for Web Applications [Электронный ресурс]. - Режим доступа:
https: //www.researchgate.net/publication/280546121_Nodej s_Event- driven_Concurrency_for_Web_Applicationst, свободный - Дата обращения 02.06.2018
11. ECMAScript 2017 Language Specification [Электронный ресурс]. - Режим доступа: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma- 262.pdf, свободный - Дата обращения 02.06.2018
12. JavaScript Getting started [Электронный ресурс]. - Режим доступа:
https://cs.nyu.edu/~yap/html/tutorial/getstart.htm, свободный - Дата обращения 29.05.2018
13. HTML 5.2: 4.12 Scripting, , [Электронный ресурс]. - Режим доступа:
https://www.w3.org/TR/html5/semantics-scripting.html#scripting-languages, свободный - Дата обращения 02.06.2018
14. How JavaScript works: an overview of the engine, the runtime, and the call stack [Электронный ресурс]. - Режим доступа: https://blog.sessionstack.com/how- does-javascript-actually-work-part-1-b0bacc073cf, свободный - Дата обращения 02.06.2018
15. Why is Node.js so Popular? [Электронный ресурс]. - Режим доступа: https://dzone.com/articles/why-nodejs-so-popular, свободный - Дата обращения 29.05.2018...39


Работу высылаем на протяжении 30 минут после оплаты.




©2025 Cервис помощи студентам в выполнении работ