Статья опубликована в рамках: Научного журнала «Студенческий» № 20(106)
Рубрика журнала: Информационные технологии
Скачать книгу(-и): скачать журнал часть 1, скачать журнал часть 2, скачать журнал часть 3, скачать журнал часть 4, скачать журнал часть 5, скачать журнал часть 6
ВЫБОР И ОБОСНОВАНИЕ ИСПОЛЬЗОВАНИЯ СОВРЕМЕННЫХ СРЕДСТВ ДЛЯ СЕРВЕРНОЙ РАЗРАБОТКИ
АННОТАЦИЯ
В статье рассматриваются современные методы разработки серверных приложений. Данные методы подходят для автоматизации любых бизнес-процессов.
Ключевые слова: разработка ПО, серверные приложения приложения, Node.js, MongoDB.
Node.js — JavaScript-платформа, транслирующая JavaScript-код в машинный код. Для этого используется движок JavaScript Chrome V8 [1]. Программная платформа Node.js в основном предназначена для создания легко масштабируемых серверных приложений. В отличие от традиционных подходов к серверным реализациям, в основе Node.js лежит событийно-ориентированное и реактивное программирование, с неблокирующим вводом/выводом.
MongoDB — это документно-ориентированная база данных написанная на языке C++. Основной особенностью является отсутствие необходимости описания схем таблиц. Данные хранятся в json-подобных документах и могут в процессе разработки дополняться новыми полями. Классифицирована как NoSQL [2]. Ниже будут рассмотрены преимущества базы данных MongoDB.
Nginx — это HTTP-сервер и обратный прокси-сервер. Может использоваться как почтовый сервер и TCP/UDP прокси-сервер общего назначения [3]. Позиционируется производителем как лёгкий и не перегруженный функциями. Обслуживает большую часть сайтов доменных зон ru, su, рф.
Длительное время с ним работают Яндекс, Вконтакте, Рамблер, Mail.ru. Nginx имеет встроенные возможности балансировки нагрузки и работа с ним в общем случае проще, чем работа с Apache, который является 1-ым по популярности веб-сервером в мире. Nginx можно использовать как звено для балансировки нагрузки между другими серверами добавив несколько строк в конфигурационный файл. Компания Netflix использовала Nginx в качестве веб-сервера для своего высоконагруженного потокового видео.
Рабочие процессы Nginx обслуживают множество соединений одновременно. Они выполняют цикл обработки событий от дескрипторов (Событийно-ориентированное программирование). Полученные данные разбираются с помощью конечного автомата. Разобранный запрос последовательно обрабатывается цепочкой модулей, задаваемой конфигурацией. Ответ клиенту формируется в буферах, которые хранят данные либо в памяти, либо указывают на отрезок файла. Буферы объединяются в цепочки, определяющие последовательность, в которой данные будут переданы клиенту. Если операционная система поддерживает эффективные операции ввода-вывода, такие как writev и sendfile, то nginx применяет их по возможности.
HTTPS является расширением протокола HTTP. В его основе лежит HTTP протокол, работающий через шифрованные транспортные механизмы. Данные, которые проходят по протоколу HTTPS, защищены от атак, основанных на прослушивании сетевого соединения: снифферских и атак типа man-in-the-middle, при условии, что сертификат сервера проверен и ему можно доверять [4].
Снифферская атака — это такая атака, в которой трафик перехватывается с помощью сетевой карты посредника. Такой тип атак был популярен, когда трафик передавался с помощью хабов, так как хаб транслировал весь входящий трафик на все устройства сети. Данная проблема была решена использованием коммутаторов, так как в отличие от хабов, трафик в коммутаторе направленный и идёт строго от узла источника к узлу назначения. Несмотря на то что частично данные попадают на другие узлы, этот трафик малоэффективно анализировать.
Man-in-the-middle — это вид атаки, в которой трафик перехватывается злоумышленником и ретранслируется по назначению, в итоге злоумышленник получает данные которые пытаются передать от одного узла к другому, копирует или изменяет их и отправляет по назначению. Данная уязвимость актуальна при использования ассиметричных схем шифрования.
Пример перехвата данных при использовании ассиметричного шифрования: Необходимо отправить данные из узла A в узел B, в то время как узел C является злоумышленником и пытается перехватить данные.
- узел A и B отправляют свои открытые ключи;
- ключи перехватывается узлом C внедряясь в обмен ключами между A и B;
- узел C отправляет A и B свой открытый ключ, сохраняя ключи A и B для шифрования перехваченных сообщений;
- узел A отправляет данные, зашифрованные как ему кажется открытым ключом узла B, что но на самом деле является подменённым ключом узла C;
- узел C получает зашифрованные данные и расшифровывает их своим секретным ключом;
- узел C копирует или изменяет эти данные;
- узел C зашифровывает данные открытым ключом узла B , чтобы узел B мог расшифровать их;
- узел B отправляет данные шифруя их подменённым открытым ключом узла A (ключ узла C).
Далее узел C таким же образом пересылает данные от B к A и продолжает перехватывать все последующие данные, поэтому важно, чтобы Узел A знал определённо, что он пользуется открытым ключом узла B. Это объясняет необходимость того, что сертификат сервера должен быть проверен и ему можно доверять. Поэтому возникает необходимость в центре сертификации.
Центр сертификации – это сторона, чья честность неоспорима. Основной задачей ЦС является подтверждение подлинности открытых ключей с помощью с помощью сертификатов электронной подписи. Таким образом гарантируется то, что данные будут переданы от клиента к серверу и никто не сможет их перехватить.
Список литературы:
- Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine [электронный ресурс] // Nodejs. 2018. URL: https://nodejs.org/en/ (дата обращения: 10.05.2020).
- What is MongoDB? [электронный ресурс] // MongoDB. 2018. URL: https://www.mongodb.com/what-is-mongodb (дата обращения: 10.05. 2020).
- Nginx [электронный ресурс] // nginx. 2018. URL: https://nginx.ru/ru/ (дата обращения: 11.05.2018).
- What is HTTPS? [Электронный ресурс] // instantssl. 2018. URL: https://www.instantssl.com/ssl-certificate-products/https.html (дата обращения: 11.мая. 2020).
Оставить комментарий