Зарегистрируйтесь, чтобы продолжить обучение

Протокол HTTPS и передача данных по сети Введение в тестирование веб-приложений

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

Когда пользователь взаимодействует с сайтом, то происходит невидимый процесс передачи данных. Пользователь отправляет запрос, что хочет увидеть страницу, а сервер возвращает ответ в виде HTML-страницы.

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

В этом уроке мы узнаем о протоколе HTTP и его защищенной версии — протокол HTTPS. Узнаем, почему небезопасно передавать банковские данные по протоколу HTTP и как злоумышленники могут украсть эту информацию.

Типы протоколов

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

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

  • HTTP

  • HTTPS

Разберем каждый подробнее.

Протокол HTTP

Из прошлых уроков мы узнали, что сайты состоят из гипертекста, который размечается с помощью HTML.

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

Получение данных по HTTP

Запросы и ответы в этом случае происходят с помощью протокола HTTP, который расшифровывается как HyperText Transfer Protocol или протокол для передачи гипертекста. Он устанавливает, в каком виде передаются данные, какая информация должна быть передана на сервер, а какая возвращена пользователю.

Так выглядит часть запроса от браузера при обращении к странице этого урока:

GET /courses/web-testing-basics/lessons/hypertext/theory_unit HTTP/3
Host: ru.hexlet.io
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/110.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8

Это лишь малая часть того, какие данные отправляются на сервер при обращении к странице. По ним сервер понимает:

  • Какую страницу запрашивают

  • Кто запрашивает страницу, а именно данные о браузере

  • Какие данные может обработать пользователь

  • Переданные данные в форме

Последний пункт списка может представлять опасность. Через протокол HTTP передаются данные, которые вводятся в формах. Опасность в том, что эти данные не защищены и передаются в том виде, в котором мы их отправили:

Незашифрованные данные по HTTP

Когда сервер получает запрос, он формирует не только данные в виде HTML, но и множество служебной информации. Она помогает браузеру правильно обработать данный запрос. Вот пример полученного ответа от сервера:

HTTP/2 200 OK
date: Fri, 17 Mar 2023 12:27:07 GMT
content-type: text/html; charset=utf-8

<!doctype html>
<html>
Здесь и далее разметка в формате HTML

В этом ответе для тестировщика важна первая строка — HTTP/2 200 OK. В этой строке содержится «ответ сервера» — специальный код, который приходит от сервера и подсказывает браузеру, какой статус страницы.

Этих ответов много, но стоит наизусть знать несколько из них:

  • 200 OK — Данные получены без ошибок. Этот статус основной для страниц

  • 301 Moved Permanently — страница перемещена на новый адрес. Когда браузер получает этот код, то ищет в ответе новую страницу и автоматически переходит на нее. Такой процесс называется «редирект»

  • 404 Not Found — страница не найдена. Чтобы не отдавать пустую страницу с ошибкой, разработчики делают специальную страницу при возникновении ошибки и показывают ее пользователю

  • 500 Internal Server Error, 502 Bad Gateway и 503 Service Unavailable — ошибки, которые связаны с сервером. Временные ошибки — связаны с проблемой доступа к серверу. Глобальные ошибки — связаны с неработающим кодом или проблемами с доступом к базе данных

Главная проблема HTTP — открытость данных. Если передавать важные данные, то они пересылаются в открытом виде и могут быть перехвачены злоумышленниками. Чтобы избежать этого, был придуман стандарт HTTPS, где буква S означает Secure — безопасный.

Протокол HTTPS

Главное отличие HTTP от HTTPS — шифрование данных. Все данные, которые передаются от клиента на сервер, будут передаваться не в открытом, а в зашифрованном виде. Это позволяет защититься от хакерских атак.

Посмотрим на адресную строку:

Протокол HTTPS на Хекслете

Сайт Хекслета тоже работает по HTTPS, о чем говорит протокол перед названием сайта и значок замочка. Когда видите эти два параметра, можно не волноваться за свои данные:

Что тестировать

При тестировании веб-страниц нужно обращать внимание на следующие факторы:

  • Если со страницы передаются данные от пользователей, то страница должна быть защищена по протоколу HTTPS. Самый простой вариант — полностью перевести сайт на HTTPS

  • Все страницы должны отдавать HTTP код «200 OK»

  • Если одна из страниц перемещена, то она должна отдавать код «301 Moved Permanently» и автоматически перенаправлять на новую страницу

Инструменты для тестирования

Для проверки страницы тестировщик может использовать встроенный во все браузеры «Инструменты разработчика». Как его открывать мы разбирали в прошлых уроках. Сейчас разберем, как увидеть ответ сервера.

Чтобы посмотреть все запросы сервера, используется вкладка Network:

Вкладка Network DevTools

В этой вкладке нас интересует несколько полей:

  • Status — код ответа. Это код HTTP, про который говорилось выше. В большинстве нормальных ситуаций этот код будет 200

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

  • File — какой конкретно файл был загружен

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

200 GET ru.hexlet.io theory_unit

Это и есть ответ текущей страницы теории. Код 200 сообщит, что страница вернулась без ошибок

Выводы

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

Кодов HTTP много, но стоит помнить о нескольких основных из них:

  • 200 OK — Данные получены без ошибок

  • 301 Moved Permanently — страница перемещена на новый адрес

  • 404 Not Found — страница не найдена

  • 500 Internal Server Error, 502 Bad Gateway и 503 Service Unavailable — ошибки, связанные с сервером

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

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


Самостоятельная работа

Возьмем для примера три сайта, которые работают по-разному с HTTP и HTTPS:

Изучите, как эти сайты работают, если зайти на них с протоколом https:// и http://. Для этого в адресной строке браузера необходимо ввести протокол вручную.

Ответьте на следующие вопросы:

  • Можно открыть сайт по HTTP?
  • Можно ли открыть сайт по HTTPS?
  • Работает ли перенаправление пользователя с сайта по HTTP на HTTPS?
  • Одинаково ли открывается сайт в разных браузерах?

Дополнительные материалы

  1. 7 полезных функций DevTools для тестировщиков

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы
профессия
Тестирование веб-приложений, чек-листы и тест-кейсы, этапы тестирования, DevTools, Postman, SQL, Git, HTTP/HTTPS, API
4 месяца
с нуля
Старт 26 декабря

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»
Изображение Тото

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