###### tags: `WEB`
# WEB_Basic-Горбаконь_Кирилл-Практика_1
## Введение в Web технологии
* Устанавливаем и настраиваем **Linux Ubuntu 20.04**.

`apt update`

* Настраиваем подключение к репозиториям **Docker**.
`apt install apt-transport-https ca-certificates curl software-properties-common`

`curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -`

`add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"`

`apt-cache policy docker-ce`

* Устанавливаем **Docker CE**.
`apt install docker-ce`

`systemctl status docker`

* Устанавливаем веб-приложение **https://hub.docker.com/r/bkimminich/juice-shop**.
`docker pull bkimminich/juice-shop`

`docker run --rm -p 3000:3000 bkimminich/juice-shop`

* Переходим по адресу `localhost:3000` и получаем доступ к приложению.

Изучим запросы браузера к приложению и форме регистрации пользователей:
- При переходе на страницу отправляются GET-запросы к нескольким .js файлам.

- Запрос `/api/challenges/?name=Score Board`

- Перейдем по адресу. Разработчики дают нам задание найти спрятанную страницу "Score Board".

* Нам оставили подсказку: найти ответ "за сценой". В одном из .js файлов находим путь к искомой странице.
`cat main.js | grep score`

* Переходим по адресу: искомая страница найдена.

* На этой странице расположены все задания от разработчиков. Также, доступ к ним можно получить удалив фильтрацию в адресе `/api/challenges/?name=Score Board`.

- При регистрации отправляется запрос `/api/Users` с введенными данными.

* Отдельно отправляется запрос с ответом на секретный вопрос.

* В ответе приложения наш секретный ответ хэшируется.

* Во время аутентификации отправляется запрос с логином и паролем.

* В ответе приложения содержится *access token*.

* При использовании приложения регулярно отправляются запросы `whoami`.

* Сформируем запрос к приложению через **curl**.
Авторизуемся в приложении с помощью команды `curl -u customer@google.com:secret_pass localhost:3000`

* Сформируем запрос к приложению через **powershell**.
`Invoke-WebRequest -UseBasicParsing -Uri "http://172.20.10.6:3000"`

* Изучим ответ приложения и распарсим его с помощью утилит **jq**.
Ответ без использования утилиты **jq**:
`curl http://localhost:3000/rest/admin/application-configuration`

Ответ с использованием утилиты **jq**:
`curl http://localhost:3000/rest/admin/application-configuration | jq`
