Что относится к сетевым приложениям браузер

Обновлено: 07.07.2024

Эта статья - четвертая в серии статей, предназначенных для помощи читателям оценить риск, которому подвергаются их системы, связанные с Интернет. В первой статье мы установили причины, по которым следует производить техническую оценку риска. Во второй мы приступили к обсуждению методик, которым мы следуем при выполнении этого вида оценки. В третьей статье эти методики обсуждались более подробно, основное внимание было уделено просмотру уязвимостей и наглядности. В этой статье мы обсудим относительно малоизученный аспект безопасности Интернет - обычные Web приложения.

Эта статья - четвертая в серии статей, предназначенных для помощи читателям оценить риск, которому подвергаются их системы, связанные с Интернет. В первой статье мы установили причины, по которым следует производить техническую оценку риска. Во второй мы приступили к обсуждению методик, которым мы следуем при выполнении этого вида оценки. В третьей статье эти методики обсуждались более подробно, основное внимание было уделено просмотру уязвимостей и наглядности. В этой статье мы обсудим относительно малоизученный аспект безопасности Интернет - обычные Web приложения.

Анализ сетевых приложений

Из всех возможных служб Интернета DNS, e-mail и www наиболее популярны. Из них, Web службы - самые сложные и наиболее часто используемые злоумышленниками. Изначально являясь, простой текстовой информационной службой, Web постепенно развилась в очень функциональную диалоговую прикладную платформу, которая используется почти во всех приложениях, как в Интернете, так и во внутренних сетях. Главные продавцы признали силу Web и сделали существенные вклад в развитие ее платформ. Среди них: Sun (Java), Microsoft, открытое общество (PHP) и другие, например, ColdFusion. На базе этих платформ обычному администратору очень легко развивать сложные приложения. Вследствие бурного развития Web все, как по мановению волшебной палочки, вдруг стали программистами. Web приложения часто развивались неквалифицированными и неопытными разработчиками. Даже самые опытные программисты неосознанно делают ошибки, дающие потенциальным злоумышленникам точное направление, где искать уязвимое место, которое им нужно для проникновения в частную сеть. Что же говорить о программистах среднего уровня или даже ниже! Поскольку эти приложения создаются на стандартных платформах, они часто аналогичны и поэтому, как правило, имеют одинаково слабые места в защите.

Как все более и более значимая технология в Интернете, распространенные сетевые приложения должны рассматриваться в каждой оценке безопасности. Хотя имеется проблема: мы знаем, что почти каждый, кто запускает DNS, автоматически запускает BIND (Berkley Internet Name Domain). Таким образом, если BIND имеет уязвимость, она затронет каждого. Уязвимость станет известной общественности, а ее подпись, в конечном счете, обнаружится сканерами уязвимости и попадет в базы данных уязвимостей.

Мы можем проверить системы, используя такие сканеры и определить уязвимость, которая может нас затронуть. А как же поступать с уязвимостями, связанными с самодельным сайтом какого-нибудь клиента мелкой компании, типа Joe Soap Inc.. Обязательно ли включать их в наш сканер уязвимостей? Ответ: нет, потому что Web приложения так часто являются "самодельными", так что их уязвимости, вряд ли станут широко известными, так что каждое приложение нужно рассматривать индивидуально, пытаясь определить ошибки безопасности, возможно сделанные непрофессиональными программистами.

Оценка Web приложений является новым направлением и представляет аналитикам безопасности целый пакет проблем. Ранее известные важные предпосылки, методики и инструменты в этой области не применимы и даже ведущие практики, только начинают понимать все возникающие проблемы, связанные с этими видами систем.

Проверка защиты сетевых приложений

Наше испытание сетевых приложений главным образом основано на принципе "черного ящика", то есть мы исследуем приложения над сетью без доступа к исходной программе. Конечно, не имея доступа к исходной программе, имеется вероятность пропустить что-нибудь важное. Назовем это "фактором нечеткости". Наш собственный план тестирования "нечетких" сетевых приложений состоит из двух частей: первая часть - это простой список вопросов, на которые нужно ответить в процессе рассмотрения приложения, а вторая часть - список банальных программных ошибок, наличие которых нужно проверить.

Хотя каждый программист и, следовательно, каждое приложение уникальны, ошибки, как правило, одни и те же. Мы составили список общих программных ошибок, наличие которых можно проверить, даже находясь над сетью. Детально опишем план тестирования немного позже, а пока нужно кратко напомнить некоторые основные понятия, которые читателю необходимо понимать.

Независимо от используемой платформы, основное большинство приложений имеет подобную основную архитектуру, как изображено ниже:


Рис. 1: Типичная архитектура Web приложения.

На этом рисунке изображена популярная сетевая архитектура для Web приложений. Web-сервер располагается в особо защищенной зоне сети, называемой демилитаризированной Зоной (DMZ). Используются два файрволла: один - чтобы защитить демилитаризованную зону от Интернета, а другой - чтобы защитить внутреннюю сеть от демилитаризованной зоны. Эта архитектура - хорошо продумана системой безопасности и создана для минимизации последствий в случае, когда Web сервер будет взломан. Однако два канала должны быть всегда рабочими в этой архитектуре. Пользователь всегда должен иметь возможность соединиться с web-сервером из Интернета, а web-сервер должен иметь возможность соединиться с сервером базы данных. Эти же два канала использует и нападающий, чтобы получить доступ к внутренней сети.

Сетевые приложения: основные вопросы

Теперь, поняв основы, мы должны понять, как оценить сетевые приложения. Мы также кратко рассмотрели довольно простую, но обычную архитектуру сети. Рассмотрим теперь глубже первую часть плана оценок, о которой говорилось выше. На какие вопросы вы должны ответить, сталкиваясь с изготовленным на заказ сетевым приложением? Эти вопросы весьма просты, но важны, если мы надеемся проникнуть в глубь оцениваемого приложения:

Вопрос 1: Кто эти люди?

Проект и архитектура продукта чаще всего отражают стиль и культуру организации, которая его создала. И обратно, многое можно понять в проекте и архитектуре приложения, если вы понимаете стиль и культуру организации. Мы ищем это понимание на двух уровнях:

Общий: С какой группой мы имеем дело? Какой у них основной бизнес? Каков их стиль и культура?

Частный: Кто разработал и развивал рассматриваемое приложение? Какие они имеют знания, квалификацию, каков их стиль?

Ответы на эти вопросы дадут нам понимание того, как приложение будет построено и где оно может содержать ошибки.

Вопрос 2: Как приложение работает?

На следующем этапе мы должны понять, как рассматриваемое приложение собрано. Вы должны предпринять все усилия, чтобы понять механизм работы приложения. Приведем список важных моментов, которые необходимо рассмотреть:

1.Может ли приложение работать в диалоговом режиме? Если да, то где расположены диалоговые элементы? Не каждый сайт является диалоговым. Кроме того, некоторые сайты более диалоговые, чем другие. Вы должны найти диалоговые элементы сайта и определить, насколько они диалоговые в действительности.

2.Как была построена система? Вспомним прикладные платформы развития, о которых говорилось выше. Каждый план развития имеет свои силы и слабости. Определив и поняв основные компоненты, на которых приложение было построено, мы узнаем, где нужно начинать искать возможную уязвимость.

3.Откуда приложение получает данные? Диалоговое приложение должно получать информацию из каких-то источников. Поскольку сетевые приложения не имеют "гражданства", необходимо найти место хранения данных пользователей. Определение места расположения конечного источника данных многое даст нам в понимании принципа работы приложения и того, как его можно взломать.

5.Как они узнают меня? Многие сайты позволяют работать анонимно, то есть без установления личности, но некоторые сайты предпочитают познакомиться с вами, прежде, чем предоставить вам доступ. Если это так, вам нужно понимать, как происходит установление вашей личности. Какими методами (например, Basic Authentication), и где хранятся данные пользователей (например, в NT SAM).

6.Как они отслеживают состояние? Как только пользователь определен, не имеющее гражданства приложение должно отслеживать пользователя. Отслеживание состояния также необходимо в сложных процессах, когда результаты, полученные на предыдущем шаге, используются, как входные данные на следующем. В каждом случае, отслеживание состояния - область, крайне склонная к ошибкам, и нужно иметь глубокое понимание этого при оценке приложения.

Вопрос 3: Почему они выбрали именно этот способ?

  • Лень. Часто выбирается более дешевая и легкая архитектура. Ленивый проект – самый опасный проект.
  • Политика. Часто технические люди вынуждены придерживаться некоторых технологий из-за стратегических или политических решений высокого уровня в данной организации. Например, часто можно встретить организации, чьи стратегии придерживаются компании Microsoft или, реже, открытых источников. В этом случае архитектура, как правило, стандартна и хорошо известна.
  • Неопытность. Мы уже говорили о том, что многие разработчики Web приложений неопытны и неквалифицированны. Такие разработчики имеют тенденцию "заимствовать" и копировать программы с сайтов и других общественных источников, и склонны допускать глупые, любительские ошибки.
  • Сверхопытность. В нашей индустрии специалисты высочайшего класса в своей узкой области, часто пытаются переносить свой опыт на другие области. Определение специфического "конька" разработчика подскажет вам, где можно даже не искать уязвимости, а в каких новых для разработчика областях уязвимости могут находиться.

Вопрос 4: Каковы типичные ошибки данной архитектуры?

Теперь, когда вы имеете общий вид оцениваемой системы, вы можете начать искать возможные ошибки безопасности. Вы просматриваете пути сквозь защиту разработчика в попытках найти ошибки, которые он, возможно, просмотрел. В пятой и заключительной части этой серии статей мы обсудим некоторые обычные категории ошибок программирования и рассмотрим некоторые частные примеры. Теперь, когда мы создали фундамент для понимания того, чем являются сетевые приложения и как они работают, мы можем исследовать, как оценивать их для риска безопасности Интернета, что будет сделано в следующей (и последней) статье в этой серии.

header image

Браузер — это специальная программа, которая позволяет искать информацию в интернете, просматривать сайты, скачивать файлы любого формата, загружать аудио и видеофайлы. То есть, браузер является средним звеном между пользователем и интернетом.

Содержание

Как работает браузер?

Самые популярные браузеры на сегодняшний день — это Google Chrome, Opera, Firefox, Safari, Яндекс, Internet Explorer. Согласно исследованию HotLog, самым используемым в октября 2020 года стал Chrome — 64.10% пользователей выбрали именно этот браузер. С большим отрывом далее следуют Safari (14.91%) и Яндекс (12.79%). Взгляните на график ниже.

График использования браузеров

Независимо от вида браузера, механизм работы у всех одинаковый. Ниже мы пошагово описали, как работают браузеры.

Теперь, когда мы разобрались с механизмом работы браузера, рассмотрим его функции.

Функции браузера

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

  1. Позволяет скачивать файлы любого типа. Это может быть музыка, фильмы, книги, игры, программы.
  2. Позволяет использовать почту. Вы можете создать себе почтовый ящик, чтобы переписываться с друзьями, обмениваться файлами, подписаться на получение рассылок любимого бренда.
  3. Сохраняет пароли для сайтов. Таким образом, вам не приходится вводить их вручную при каждом посещении сайта.
  4. Сохраняет историю посещенных страниц. Это позволяет в любой момент найти сайт или страницу, которую вы просматривали ранее.
  5. Добавляет закладки. Браузер позволяет добавить нужный сайт в закладки, чтобы запомнить его и иметь быстрый доступ.
  6. Поддерживают разные дополнения. Сюда относятся расширения, информеры, темы оформления браузера. Расширения так и называются, потому что расширяют функциональные возможности браузера. Это могут быть интеграции, микросервисы и SaaS. Информер — это такой блок на сайте, который автоматически обновляет информацию. К самым популярным информерам относятся новостные, валютные, погодные. С помощью визуальных тем можно изменить дизайн в браузера и отдельных его элементов: фонов, вкладок, кнопок.

Самое время познакомиться с самыми известными браузерами и выбрать подходящий.

Самые популярные браузеры

  • Internet Explorer (IE)
  • Google Chrome
  • Mozilla Firefox
  • Opera
  • Safari
  • Яндекс. Браузер

В этом разделе мы познакомим вас с 6 самыми популярными браузерами. Расскажем об их преимуществах и недостатках, чтобы вы могли выбрать самый подходящий для себя.

Internet Explorer (IE)

Internet Explorer

Несмотря на то, что Google Chrome — самый скачиваемый браузер в мире, первым мы рассмотрим IE, поскольку он встроен в ОС Windows и используется всеми как минимум для того, чтобы скачать другой браузер. Был создан разработчиками Microsoft для ОС Windows в 1995 году.

Преимущества:

  • установлен по умолчанию;
  • невысокое потребление оперативной памяти.

Недостатки:

  • устаревший интерфейс;
  • низкая скорость работы;
  • не поддерживает плагины;
  • не поддерживает современные стандарты и технологии.

Google Chrome

Самый используемый браузер в мире, разработанный Google. Cтабильная версия увидела мир в декабре 2008 года. Браузер работает на движке Blink, который является ответвлением от WebKit. Относится к браузерам с открытым исходным кодом.

Преимущества:

  • высокая скорость загрузки страниц благодаря предварительной загрузке;
  • высокий уровень безопасности благодаря встроенной защите от вредоносных программ и фишинга;
  • собственный встроенный диспетчер задач позволяет закрыть только вкладку, которая тормозит или не загружается, и перейти к другой, не перезагружая браузер;
  • возможность вводить поисковые запросы в адресную строку для набора адреса сайта;
  • режим инкогнито, который позволяет удалять куки и историю посещений, что особенно полезно для работы на чужих девайсах;
  • автоматическое обновление;
  • синхронизация паролей и закладок в браузере с сервером Google, что позволяет легко получить доступ к сайтам с других девайсов или посредством переустановки системы, ведь достаточно войти в вашу учетную запись Google и все восстановиться;
  • встроенный Flash Player;
  • голосовой поиск;
  • собственный переводчик;
  • большое количество бесплатных расширений;
  • интуитивный и минималистичный интерфейс.

Недостатки:

  • высокое потребление оперативной памяти (минимум 2 Гб);
  • большой расход батареи, исходя из потребления памяти;
  • сбор данных о пользователях ввиду того, что проект — коммерческий.

Mozilla Firefox

Mozilla Firefox

Этот браузер с открытым исходным кодом был создан в 2004 году компанией Mozilla Corporation. Firefox использует собственный движок Gecko.

Преимущества:

  • один из самых безопасных браузеров — предупреждает пользователя перед посещением мошеннических, фишинговых сайтов, содержащих вирусы;
  • все скачиваемые файлы проходят проверку антивирусом;
  • наличие мастер-пароля, что позволяет безопасно использовать автозаполнение;
  • большое количество плагинов и расширений;
  • доступен режим приватного просмотра страниц (инкогнито);
  • невысокое потребление оперативной памяти;
  • возможность синхронизировать настройки на разных девайсах;
  • автоматическая проверка орфографии;
  • интуитивно понятный интерфейс и навигация;
  • блокировка всплывающих рекламных окон;
  • работа с вкладками
  • регулярные обновления в фоновом режиме.

Недостатки:

  • потребляет много оперативной памяти при большом количестве вкладок и на слабых компьютерах;
  • после обновления версии браузера расширения придется устанавливать заново;
  • нет возможности отключить картинки как в других браузерах.

Opera

Opera

Этот браузер был создан компанией Opera Software в 1994 году. Работает на движке Blink.

Преимущества:

  • режим Turbo позволяет быстро загружать страницы при медленном интернет-соединении посредством их сжатия;
  • интуитивно понятный интерфейс;
  • встроенный блокировщик рекламы;
  • удобная работа с вкладками;
  • встроенный VPN, который шифрует IP-адрес, что позволяет посещать заблокированные ресурсы;
  • встроенные мессенджеры на боковой панели
  • возможность управления горячими клавишами;
  • низкий расход батареи и экономия трафика;
  • встроенный инструмент для скриншотов.

Недостатки:

  • медленно работает на устаревших компьютерах с маленькой оперативной памятью.
  • некорректное отображение скриптов, особенно при работе с WML;
  • отсутствие закладок.

Safari

Safari

Браузер, разработанный Apple, в 2003 году. Работает на движке WebKit. Есть версии и для ОС Windows.

Преимущества:

  • высокая скорость загрузки страниц;
  • высокий уровень безопасности;
  • блокировка всплывающих окон;
  • наличие антифишингового фильтра;
  • возможность синхронизации адресных книг ОС Mac и Windows;
  • доступен режим частного просмотра (инкогнито), то есть не сохраняется история посещений, пароли, и не принимаются куки;
  • поддерживает стандарты CSS3 и HTML5 и распознает нестандартные шрифты.

Недостатки:

  • высокие требования к мощности компьютера;
  • браузер недоступен пользователям, использующим GPRS-соединение;
  • небольшое количество плагинов.

Яндекс. Браузер

Яндекс

Браузер разработан компанией “Яндекс” в 2012 году. Работает на основе движка Blink. Является одним из самых популярных браузеров в России.

Преимущества:

  • высокий уровень безопасности благодаря встроенному антивирусу;
  • высокая скорость загрузки;
  • встроенный турбо режим, что позволяет экономить трафик;
  • блокировка рекламы;
  • встроенный переводчик;
  • интеграция с сервисами Яндекса;
  • удобная работа с вкладками;
  • встроенный голосовой помощник “Алиса”;
  • синхронизация настроек между всеми девайсами;
  • доступны темы оформления.

Недостатки:

Теперь вы знаете, как работает браузер и какие функции выполняет. Мы рассмотрели преимущества и недостатки самых популярных браузеров, а выбор — за вами.

Также искали с "Браузер"

Начните пользоваться сервисом SendPulse прямо сегодня

Если вам интересно, что такое "Что такое браузер: определение, функции", вам может быть интересен наш сервис рассылок.

В переводе двенадцатой части серии материалов о JavaScript и его экосистеме, который мы сегодня публикуем, речь пойдёт о сетевой подсистеме браузеров и об оптимизации производительности и безопасности сетевых операций. Автор материала говорит, что разница между хорошим и отличным JS-разработчиком заключается не только в уровне освоения языка, но и в том, насколько хорошо он разбирается в механизмах, не входящих в язык, но используемых им. Собственно говоря, работа с сетью — это один из таких механизмов.

image


Немного истории

49 лет назад была создана компьютерная сеть ARPAnet, объединяющая несколько научных учреждений. Это была одна из первых сетей с коммутацией пакетов, и первая сеть, в который была реализована модель TCP/IP. Двадцатью годами позже Тим Бернес-Ли предложил проект известный как Всемирная паутина. За годы, которые прошли с запуска ARPAnet, интернет прошёл долгий путь — от пары компьютеров, обменивающихся пакетами данных, до более чем 75 миллионов серверов, примерно 1.3 миллиарда веб-сайтов и 3.8 миллиарда пользователей.

Количество пользователей интернета в мире

В этом материале мы поговорим о том, какие механизмы используют браузеры для того, чтобы повысить производительность работы с сетью (эти механизмы скрыты в их недрах, вероятно, вы о них, работая с сетью в JS, даже и не думаете). Кроме того, мы обратим особое внимание на сетевой уровень браузеров и приведём здесь несколько рекомендаций, касающихся того, как разработчик может помочь браузеру повысить производительность сетевой подсистемы, которую задействуют веб-приложения.

Обзор

При разработке современных веб-браузеров особое внимание уделяется быстрой, эффективной и безопасной загрузке в них страниц веб-сайтов и веб-приложений. Работу браузеров обеспечивают сотни компонентов, выполняющихся на различных уровнях и решающих широкий спектр задач, среди которых — управление процессами, безопасное выполнение кода, декодирование и воспроизведение аудио и видео, взаимодействие с видеоподсистемой компьютера и многое другое. Всё это делает браузеры больше похожими на операционные системы, а не на обычные приложения.

Общая производительность браузера зависит от целого ряда компонентов, среди которых, если рассмотреть их укрупнённо, можно отметить подсистемы, решающие задачи разбора загружаемого кода, формирования макетов страниц, применения стилей, выполнения JavaScript и WebAssembly-кода. Конечно же, сюда входят и система визуализации информации, и реализованный в браузере сетевой стек.

Программисты часто думают, что узким местом браузера является именно его сетевая подсистема. Часто так и бывает, так как все ресурсы, прежде чем с ними можно будет что-то сделать, сначала должны быть загружены из сети. Для того чтобы сетевой уровень браузера был эффективным, ему нужны возможности, позволяющие играть роль чего-то большего, нежели роль простого средства для работы с сокетами. Сетевой уровень даёт нам очень простой механизм загрузки данных, но, на самом деле, за этой внешней простотой скрывается целая платформа с собственными критериями оптимизации, API и службами.

Сетевая подсистема браузера

Занимаясь веб-разработкой, мы можем не беспокоиться об отдельных TCP или UDP-пакетах, о форматировании запросов, о кэшировании, и обо всём остальном, что происходит в ходе взаимодействия браузера с сервером. Решением всех этих сложных задач занимается браузер, что даёт нам возможность сосредоточиться на разработке приложений. Однако, знание того, что происходит в недрах браузера, может помочь нам в деле создания более быстрых и безопасных программ.

Поговорим о том, как выглядит обычный сеанс взаимодействия пользователя с браузером. В целом, он состоит из следующих операций:

Жизненный цикл запроса

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

Управление сокетами

Прежде чем говорить об управлении сокетами, рассмотрим некоторые важные понятия:

На самом деле, современные браузеры не жалеют сил на раздельное управление запросами и сокетами. Сокеты организованы в пулы, которые сгруппированы по источнику. В каждом пуле применяются собственные лимиты соединений и ограничения, касающиеся безопасности. Запросы, выполняемые к источнику, ставятся в очередь, приоритизируются, а затем привязываются к конкретным сокетам в пуле. Если только сервер не закроет соединение намеренно, один и тот же сокет может быть автоматически переиспользован для выполнения многих запросов.

Очереди запросов и система управления сокетами

Так как открытие нового TCP-соединения требует определённых затрат системных ресурсов и некоторого времени, переиспользование соединений, само по себе, является отличным средством повышения производительности. По умолчанию браузер использует так называемый механизм «keepalive», который позволяет экономить время на открытии соединения к серверу при выполнении нового запроса. Вот средние показатели времени, необходимого для открытия нового TCP-соединения:

  • Локальные запросы: 23 мс.
  • Трансконтинентальные запросы: 120 мс.
  • Интерконтинентальные запросы: 225 мс.

Как уже было сказано, всё это управляется браузером и не требует усилий со стороны программиста. Однако это не означает, что программист не может сделать ничего для того, чтобы помочь браузеру. Так, например, выбор подходящих шаблонов сетевого взаимодействия, частоты передачи данных, выбор протокола, настройка и оптимизация серверного стека, могут сыграть значительную роль в повышении общей производительности приложения.

Некоторые браузеры в деле оптимизации сетевых соединений идут ещё дальше. Например, Chrome может «самообучаться» по мере его использования, что ускоряет работу с веб-ресурсами. Он анализирует посещённые сайты и типичные шаблоны работы в интернете, что даёт ему возможность прогнозировать поведение пользователя и предпринимать какие-то меры ещё до того, как пользователь что-либо сделает. Самый простой пример — это предварительный рендеринг страницы в тот момент, когда пользователь наводит указатель мыши на ссылку. Если вам интересны внутренние механизмы оптимизации, применяемые в Chrome, вот — полезный материал на эту тему.

Сетевая безопасность и ограничения

У того, что браузеру позволено управлять отдельными сокетами, есть, помимо оптимизации производительности, ещё одна важная цель: благодаря такому подходу браузер может применять единообразный набор ограничений и правил, касающихся безопасности, при работе с недоверенными ресурсами приложений. Например, браузер не даёт прямого доступа к сокетам, так как это позволило бы любому потенциально опасному приложению выполнять произвольные соединения с любыми сетевыми системами. Браузер, кроме того, применяет ограничение на число соединений, что защищает сервер и клиент от чрезмерного использования сетевых ресурсов.

Браузер форматирует все исходящие запросы для защиты сервера от запросов, которые могут быть сформированы неправильно. Точно так же браузер относится и к ответам серверов, автоматически декодируя их и принимая меры для защиты пользователя от возможных угроз, исходящих со стороны сервера.

Процедура TLS-согласования

TLS (Transport Layer Security, протокол защиты транспортного уровня), это криптографический протокол, который обеспечивает безопасность передачи данных по компьютерным сетям. Он нашёл широкое использование во множестве областей, одна из которых — работа с веб-сайтами. Веб-сайты могут использовать TLS для защиты всех сеансов взаимодействия между серверами и веб-браузерами.

Вот как, в общих чертах, выглядит процедура TLS-рукопожатия:

Принцип одного источника

В соответствии с принципом одного источника (Same-origin policy), две страницы имеют один и тот же источник, если их протокол, порт (если задан) и хост совпадают.

Вот несколько примеров ресурсов, которые могут быть встроены в страницу с несоблюдением принципа одного источника:

Стоит отметить, что не существует единственной концепции «принципа единого источника». Вместо этого имеется набор связанных механизмов, которые применяют ограничения по доступу к DOM, по управлению куки-файлами и состоянием сессии, по работе с сетевыми ресурсами и с другими компонентами браузера.

Кэширование

Самый лучший, самый быстрый запрос — это запрос, который не ушёл в сеть, а был обработан локально. Прежде чем ставить запрос в очередь на выполнение, браузер автоматически проверяет свой кэш ресурсов, выполняет проверку найденных там ресурсов на предмет актуальности и возвращает локальные копии ресурсов в том случае, если они соответствуют определённому набору требований. Если же ресурсов в кэше нет, выполняется сетевой запрос, а полученные в ответ на него материалы, если их можно кэшировать, помещаются в кэш для последующего использования. В процессе работы с кэшем браузер выполняет следующие действия:

  • Он автоматически оценивает директивы кэширования на ресурсах, с которыми ведётся работа.
  • Он автоматически, при наличии такой возможности, перепроверяет ресурсы, срок кэширования которых истёк.
  • Он самостоятельно управляет размером кэша и удаляет из него ненужные ресурсы.

Пример

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

API и протоколы

Советы по оптимизации производительности и безопасности сетевых подсистем веб-приложений

Вот несколько советов, которые помогут вам повысить производительность и безопасность сетевых подсистем ваших веб-приложений.

  • Всегда используйте в запросах заголовок «Connection: Keep-Alive». Браузеры, кстати, используют его по умолчанию. Проверьте, чтобы и сервер использовал тот же самый механизм.
  • Используйте подходящие заголовки Cache-Control, Etag и Last-Modified при работе с ресурсами. Это позволит ускорить загрузку страниц при повторных обращениях к ним из того же браузера и сэкономить трафик.
  • Потратьте время на настройку и оптимизацию сервера. В этой области, кстати, можно увидеть настоящие чудеса. Помните о том, что процесс подобной настройки очень сильно зависит от особенностей конкретного приложения и от типа передаваемых данных.
  • Всегда используйте TLS. В особенности — если в вашем веб-приложении используются какие-либо механизмы аутентификации пользователя.
  • Выясните, какие политики безопасности предоставляют браузеры, и используйте их в своих приложениях.

Итоги

Браузеры берут на себя большую часть сложных задач по управлению всем тем, что связано с сетевым взаимодействием. Однако это не значит, что разработчик может совершенно не обращать на всё это внимание. Тот, кто хотя бы в общих чертах знает о том, что происходит в недрах браузера, может вникнуть в необходимые детали и своими действиями помочь браузеру, а значит — сделать так, чтобы его веб-приложения работали быстрее.

Предыдущие части цикла статей:

Существует два типа сетевых приложений: чисто сетевые (pure) и обособленные (standalone). Чисто сетевые приложения разработаны для применения в сетях. Использование их на отдельных компьютерах не имеет смысла. Наоборот, обособленные приложения призваны работать на отдельном компьютере. Для расширения возможностей они перестроены для работы в сетях. Примерами обособленных приложений могут служить текстовый процессор и редактор электронных таблиц.

Чисто сетевые приложения

Эти приложения были созданы для использования возможностей сетей. Каждое из них имеет свой отдельный пользовательский интерфейс и требует выполнения некоторой последовательности "сетевых" команд, индивидуальных для каждого приложения.

Ниже приведены некоторые примеры чисто сетевых приложений:

  • эмуляция терминала;
  • передача файла;
  • электронная почта;
  • групповые приложения.

Эмуляция терминала была одним из первых чисто сетевых приложений. До появления сетей терминалы использовались для доступа к прикладным программам на больших ЭВМ и миникомпьютерах. Когда на смену терминалам пришли ПК, потребовался метод доступа к прикладным программам на существующих больших ЭВМ и миникомпьютерах. Программа эмуляции терминала позволяет представить ПК для большой ЭВМ как подключенный к ней терминал. Функции центрального процессора (ЦП) ПК становятся прозрачными для пользователя, и ему кажется, что он работает с ЦП большой ЭВМ, к которой данный ПК подсоединен. Эмуляция терминала предоставляет пользователю преимущества двух сред компьютерного мира. Приложения больших ЭВМ и миникомпьютеров могут выполняться на ПК наряду с обычными обособленными приложениями типа текстовых процессоров и электронных таблиц.

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

Обособленные приложения

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

Примерами могут служить текстовые процессоры, редакторы электронных таблиц, базы данных, презентационная графика и управление проектами.

Когда обособленные приложения адаптируются для работы в сетевой среде, они разбиваются на две части.

Первая часть приложения включает пользовательский интерфейс и связующую обработку и работает на станции-клиенте. Вторая часть приложения, работающая на сервере, включает операции, требующие значительных процессорных затрат.

Поводом к переводу традиционных обособленных приложений в сетевую среду послужили следующие соображения:

  • простота использования;
  • разделение файлов;
  • ограничение ресурсов;
  • экономия от масштабирования.

В сетевых версиях приложений используется тот же пользовательский интерфейс, включая команды оператора, что и в предыдущих обособленных версиях. В отличие от чисто сетевых приложений пользователям нет необходимости изучать новые команды для обеспечения нормальной работы.

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

Некоторые ПК с ограниченными ресурсами (медленный ЦП, малая память) не могут обрабатывать целиком современные большие приложения. Однако если приложение разбивается на две части, то ПК может обрабатывать одну из этих частей, что известно как архитектура "клиент-сервер". Персональный компьютер ("клиент") в общем случае обрабатывает часть пользовательского интерфейса от всего приложения, а более мощный компьютер ("сервер") обрабатывает интенсивную процессорную часть и ввод/вывод (В/В) информации.

Новое серверное приложение не требуется для каждого пользователя. Если приложение уже существует на сервере, то новая часть пользовательского интерфейса для клиента – это все, что необходимо. Это обычно более дешево, чем использование всей программы для каждого пользователя.

Читайте также: