# WEB_Basic-Малышев_Роман-Практика-1
*Выполнил Малышев Роман*
## Установка и настройка Ubuntu 20
1. Скачаем образ диска Ubuntu 20.04 c https://releases.ubuntu.com/focal/. Desktop image.
2. Настроим в VirtualBox. То есть создадим новыю виртуальную машину.


3. Запустим виртуальную машину Ubuntu20 и приступим к установке ОС. 



Успешно установленная ubuntu 20.04.

## Настроика подключение к репозиториям docker
1. Разрешим apt использовать репозиторий по протоколу HTTPS.

2. Добавим официальный ключ GPG Docker.
3. Настроим репозиторий.

## Установка Docker CE
1. Установим Docker CE. 
2. Проверим, что Docker Engine установлен правильно. 
## Установим веб-приложение juice-shop



## Изучим запросы браузера к приложению и форме регистрации пользователей
Установим и откроем Burp Suite, затем **сделаем GET запрос.**

Про анализируем ответное сообщение http. Первая строка является строкой состояния, на ней указывается указывает протокол, версию, код состояния и описание.
1. Протокол http, версия 1.1, код состояния 200 и описание в порядке, 200 означает, что запрос клиента выполнен успешно.
2. Указывает браузеру разрешить доступ к ресурсу из любого источника.
3. HTTP-заголовок ответа `X-Content-Type-Options` является маркером, используемым сервером для указания того, что типы MIME, объявленные в заголовках Content-Type, должны соблюдаться и не изменяться. `nosniff` блокирует запрос, если запрошенный тип: "style" и его MIME не "text/css", или "script" и его MIME не JavaScript MIME-тип.
4. Страница может быть отображена только в том случае, если все фреймы-предки имеют то же происхождение, что и сама страница.
5. HTTP `Feature-Policy` определяет, разрешено ли текущему документу использовать Payment Request() API. Здесь установлено значение по умолчанию.
6. Дополнительный загаловок HTTP дял привлечения разработчиков.
7. Это маркер, который использует сервер, чтобы уведомить клиента о поддержке "запросов по кускам". Его значение указывает единицу измерения, которая может быть использована для определения диапазона чтения, в начем случае это байты.
8. Используется для задания инструкций кеширования как для запросов, так и для ответов. Инструкции кеширования однонаправленные: заданная инструкция в запросе не подразумевает, что такая же инструкция будет указана в ответе. `public` - указывает, что ответ может быть закеширован в любом кеше. `max-age=<seconds>` Задаёт максимальное время в течение которого ресурс будет считаться актуальным.
9. Заголовок `Last-Modified` в ответе HTTP содержит дату и время, в которую, по мнению удалённого сервера, запрашиваемый ресурс был изменён.
10. `ETag` является идентификатором специфической версии ресурса. 'W/' (чувствителен к регистру) указывает, что используется слабый валидатор.
11. `Content-Type` сообщает клиенту, какой будет тип передаваемого контента.
12. `Content-Length` указывает размер отправленного получателю тела объекта в байтах.
13. Заголовок ответа `Vary` определяет, как сопоставить будущие заголовки запроса, чтобы решить, можно ли использовать кешированный ответ, а не запрашивать новый с исходного сервера.
14. `Date` -- текущее время сервера.
15. Заголовок `Connection` определяет, остаётся ли сетевое соединение активным после завершения текущей транзакции (запроса). keep-alive -- соединение остаётся и не завершается, позволяя выполнять последующие запросы на тот же сервер.
16. Целое число, представляющее собой время в секундах, в течение которого хост позволит незанятому соединению оставаться открытым до его закрытия.
**Сделаем GET запрос к форме регистрации.**

## Запрос к приложению через curl
Выполним аналогичный запрос через приложение curl


## Запрос к приложению через powershell
Сделаем аналогичный запрос с хостовой Windows 10 к приложению juice-shop.


## Изучим ответ приложения и распарсим его с помощью утилит jq
1. Установим утилиту jq. 
2. 
3. Можно записать в свой файл, чтобы потом на него накладывать фильтр, точнее работать с данными. 
4. Выведем конфиг. 

Можно также вывесит массив. Например загаловки в memories.
