Auto | arch-x1: 2026-06-04 09:06:53
This commit is contained in:
Vendored
+8
-7
File diff suppressed because one or more lines are too long
@@ -0,0 +1,47 @@
|
|||||||
|
---
|
||||||
|
title: OAuth 2.0
|
||||||
|
status: seed
|
||||||
|
type: concept
|
||||||
|
tags: [web, security, oauth, authorization]
|
||||||
|
created: 2026-06-04
|
||||||
|
updated: 2026-06-04
|
||||||
|
source: "[[00_базовые_понятия.pdf]]"
|
||||||
|
aliases:
|
||||||
|
- OAuth 2
|
||||||
|
- OAuth 2.0
|
||||||
|
---
|
||||||
|
# OAuth 2.0
|
||||||
|
|
||||||
|
OAuth 2.0 — протокол авторизации, который позволяет приложению получить ограниченный доступ к ресурсам пользователя на другом сервисе без передачи пароля пользователя этому приложению.
|
||||||
|
|
||||||
|
## Где встречается
|
||||||
|
|
||||||
|
- вход на сайт через Google, GitHub, VK или другую внешнюю учётную запись;
|
||||||
|
- мобильное приложение получает доступ к данным в облаке;
|
||||||
|
- бот или интеграция получает доступ к API сервиса.
|
||||||
|
|
||||||
|
## Главная идея
|
||||||
|
|
||||||
|
Пользователь подтверждает доступ на стороне сервиса-владельца данных. Клиентское приложение получает токен и использует его для запросов к API.
|
||||||
|
|
||||||
|
Пароль пользователя при этом остаётся у сервиса-источника, а стороннее приложение получает только ограниченное разрешение.
|
||||||
|
|
||||||
|
## Участники
|
||||||
|
|
||||||
|
- Resource Owner — владелец ресурса, обычно пользователь.
|
||||||
|
- Client — приложение, которому нужен доступ.
|
||||||
|
- Authorization Server — сервер, который выдаёт токены.
|
||||||
|
- Resource Server — API, который принимает токен и отдаёт защищённые данные.
|
||||||
|
|
||||||
|
## Токены
|
||||||
|
|
||||||
|
- Access token — используется для доступа к API.
|
||||||
|
- Refresh token — используется для получения нового access token без повторного входа пользователя.
|
||||||
|
- Scope — набор разрешений, ограничивающий действия клиента.
|
||||||
|
|
||||||
|
OAuth 2.0 — про авторизацию. Сам по себе он не обязан доказывать личность пользователя как протокол аутентификации; для входа поверх OAuth обычно используют OpenID Connect.
|
||||||
|
|
||||||
|
## Связи
|
||||||
|
|
||||||
|
- [[Веб-аутентификация и авторизация]]
|
||||||
|
- [[HTTP, HTTPS и HTTP3]]
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
---
|
||||||
|
title: Веб-аутентификация и авторизация
|
||||||
|
status: seed
|
||||||
|
type: concept
|
||||||
|
tags: [web, security, authentication, authorization, oauth]
|
||||||
|
created: 2026-06-04
|
||||||
|
updated: 2026-06-04
|
||||||
|
source: "[[00_базовые_понятия.pdf]]"
|
||||||
|
aliases:
|
||||||
|
- Идентификация, аутентификация и авторизация
|
||||||
|
- Веб-аутентификация
|
||||||
|
---
|
||||||
|
# Веб-аутентификация и авторизация
|
||||||
|
|
||||||
|
Идентификация, аутентификация и авторизация — разные этапы контроля доступа.
|
||||||
|
|
||||||
|
## Термины
|
||||||
|
|
||||||
|
- Идентификация — пользователь сообщает, кто он: логин, email, номер телефона, ID.
|
||||||
|
- Аутентификация — система проверяет, что пользователь действительно тот, за кого себя выдаёт: пароль, одноразовый код, ключ, сертификат.
|
||||||
|
- Авторизация — система решает, что уже аутентифицированному пользователю разрешено делать.
|
||||||
|
|
||||||
|
Коротко: идентификация отвечает на вопрос "кто ты?", аутентификация — "докажи", авторизация — "что тебе можно?".
|
||||||
|
|
||||||
|
## HTTP-аутентификация
|
||||||
|
|
||||||
|
Распространённые схемы:
|
||||||
|
|
||||||
|
- `Basic` — логин и пароль передаются как base64-строка. Base64 не является шифрованием, поэтому Basic нельзя использовать без HTTPS для чувствительных данных.
|
||||||
|
- `Digest` — схема с хешированием, исторически безопаснее Basic, но сейчас используется реже.
|
||||||
|
- `Bearer` — клиент передаёт токен, обычно в заголовке `Authorization`.
|
||||||
|
|
||||||
|
Пример Bearer:
|
||||||
|
|
||||||
|
```http
|
||||||
|
Authorization: Bearer eyJhbGciOi...
|
||||||
|
```
|
||||||
|
|
||||||
|
Bearer-токен даёт доступ тому, кто им владеет. Поэтому токены нужно хранить аккуратно, ограничивать срок их жизни и уметь отзывать.
|
||||||
|
|
||||||
|
## Связи
|
||||||
|
|
||||||
|
- [[OAuth 2.0]]
|
||||||
|
- [[HTTP, HTTPS и HTTP3]]
|
||||||
@@ -0,0 +1,66 @@
|
|||||||
|
---
|
||||||
|
title: Подсети и маска подсети
|
||||||
|
status: seed
|
||||||
|
type: concept
|
||||||
|
tags: [network, networking, subnet, ipv4]
|
||||||
|
created: 2026-06-04
|
||||||
|
updated: 2026-06-04
|
||||||
|
source: "[[00_базовые_понятия.pdf]]"
|
||||||
|
aliases:
|
||||||
|
- Маска подсети
|
||||||
|
- Подсети
|
||||||
|
---
|
||||||
|
# Подсети и маска подсети
|
||||||
|
|
||||||
|
Маска подсети показывает, какая часть IPv4-адреса относится к сети, а какая — к хосту внутри этой сети.
|
||||||
|
|
||||||
|
## Главное
|
||||||
|
|
||||||
|
IPv4-адрес состоит из 32 бит. Без маски нельзя однозначно понять, где заканчивается номер сети и начинается номер хоста.
|
||||||
|
|
||||||
|
Пример:
|
||||||
|
|
||||||
|
```text
|
||||||
|
IP: 192.168.123.132
|
||||||
|
Маска: 255.255.255.0
|
||||||
|
CIDR: /24
|
||||||
|
```
|
||||||
|
|
||||||
|
`/24` означает, что первые 24 бита — сеть, оставшиеся 8 бит — хосты.
|
||||||
|
|
||||||
|
Для примера выше:
|
||||||
|
|
||||||
|
- адрес сети: `192.168.123.0`;
|
||||||
|
- часть хоста: `0.0.0.132`;
|
||||||
|
- маска: `255.255.255.0`.
|
||||||
|
|
||||||
|
## CIDR
|
||||||
|
|
||||||
|
CIDR-запись `/N` показывает количество единиц в маске.
|
||||||
|
|
||||||
|
| CIDR | Маска | Типичный смысл |
|
||||||
|
|------|-------|----------------|
|
||||||
|
| `/32` | `255.255.255.255` | один конкретный IPv4-адрес |
|
||||||
|
| `/24` | `255.255.255.0` | 256 адресов в подсети |
|
||||||
|
| `/16` | `255.255.0.0` | крупная сеть |
|
||||||
|
| `/8` | `255.0.0.0` | очень крупная сеть |
|
||||||
|
| `/0` | `0.0.0.0` | весь IPv4-интернет, маршрут по умолчанию |
|
||||||
|
|
||||||
|
## Приватные IPv4-диапазоны
|
||||||
|
|
||||||
|
Эти адреса не маршрутизируются напрямую в публичном интернете и часто используются вместе с NAT:
|
||||||
|
|
||||||
|
- `10.0.0.0/8`;
|
||||||
|
- `172.16.0.0/12`;
|
||||||
|
- `192.168.0.0/16`.
|
||||||
|
|
||||||
|
Loopback-диапазон:
|
||||||
|
|
||||||
|
- `127.0.0.0/8`, чаще всего `127.0.0.1` как `localhost`.
|
||||||
|
|
||||||
|
## Связи
|
||||||
|
|
||||||
|
- [[IP-адрес]]
|
||||||
|
- [[IPv6]]
|
||||||
|
- [[NAT]]
|
||||||
|
- [[Сетевые порты]]
|
||||||
@@ -0,0 +1,123 @@
|
|||||||
|
---
|
||||||
|
title: HTTP, HTTPS и HTTP/3
|
||||||
|
status: seed
|
||||||
|
type: concept
|
||||||
|
tags: [web, network, networking, protocols, http, https, http3]
|
||||||
|
created: 2026-06-04
|
||||||
|
updated: 2026-06-04
|
||||||
|
source: "[[00_базовые_понятия.pdf]]"
|
||||||
|
aliases:
|
||||||
|
- HTTP, HTTPS и HTTP/3
|
||||||
|
---
|
||||||
|
# HTTP, HTTPS и HTTP/3
|
||||||
|
|
||||||
|
HTTP (HyperText Transfer Protocol) — прикладной протокол для доступа к ресурсам WWW. Клиент и сервер обмениваются отдельными сообщениями: клиент отправляет HTTP-запрос, сервер возвращает HTTP-ответ.
|
||||||
|
|
||||||
|
## Главное
|
||||||
|
|
||||||
|
- HTTP сам по себе не хранит состояние между запросами. Сессии поверх HTTP обычно поддерживаются через cookies или токены.
|
||||||
|
- HTTP/1.0 часто открывал новое TCP-соединение на каждый обмен запросом и ответом.
|
||||||
|
- HTTP/1.1 добавил постоянные соединения и конвейерную обработку.
|
||||||
|
- HTTP/2 использует бинарные фреймы, сжатие заголовков и мультиплексирование нескольких потоков в одном TCP-соединении.
|
||||||
|
- HTTPS — это HTTP поверх TLS. Он защищает конфиденциальность, целостность и аутентичность соединения.
|
||||||
|
- HTTP/3 переносит семантику HTTP на QUIC поверх UDP и уменьшает проблему head-of-line blocking.
|
||||||
|
|
||||||
|
## HTTP-запрос
|
||||||
|
|
||||||
|
Стартовая строка запроса состоит из метода, цели запроса и версии протокола:
|
||||||
|
|
||||||
|
```http
|
||||||
|
GET /index.html HTTP/1.1
|
||||||
|
```
|
||||||
|
|
||||||
|
Основные методы:
|
||||||
|
|
||||||
|
| Метод | Что делает |
|
||||||
|
|-------|------------|
|
||||||
|
| `GET` | Получить ресурс; параметры часто передаются в query string. |
|
||||||
|
| `POST` | Отправить данные на сервер: форма, JSON, файл. |
|
||||||
|
| `HEAD` | Получить только заголовки, как у `GET`, без тела ответа. |
|
||||||
|
| `PUT` | Создать или полностью заменить ресурс. |
|
||||||
|
| `PATCH` | Частично изменить ресурс. |
|
||||||
|
| `DELETE` | Удалить ресурс. |
|
||||||
|
| `OPTIONS` | Узнать доступные методы/возможности сервера. |
|
||||||
|
|
||||||
|
## HTTP-сообщение
|
||||||
|
|
||||||
|
И запрос, и ответ имеют общую структуру:
|
||||||
|
|
||||||
|
1. Стартовая строка.
|
||||||
|
2. Заголовки.
|
||||||
|
3. Пустая строка.
|
||||||
|
4. Необязательное тело.
|
||||||
|
|
||||||
|
Заголовок записывается как `Имя-Заголовка: значение`. Имя не чувствительно к регистру.
|
||||||
|
|
||||||
|
Частые заголовки запроса:
|
||||||
|
|
||||||
|
- `Host` — конкретный домен или IP, к которому обращается клиент.
|
||||||
|
- `User-Agent` — сведения о клиенте: браузер, ОС, версия.
|
||||||
|
- `Accept` — какие типы данных клиент готов принять.
|
||||||
|
- `Cookie` — cookies клиента.
|
||||||
|
- `Authorization` — данные аутентификации, например Bearer-токен.
|
||||||
|
|
||||||
|
## HTTP-ответ
|
||||||
|
|
||||||
|
Строка статуса ответа содержит версию протокола, код состояния и текстовое пояснение:
|
||||||
|
|
||||||
|
```http
|
||||||
|
HTTP/1.1 200 OK
|
||||||
|
```
|
||||||
|
|
||||||
|
Классы кодов:
|
||||||
|
|
||||||
|
- `1xx` — информационные.
|
||||||
|
- `2xx` — успешная обработка.
|
||||||
|
- `3xx` — перенаправление.
|
||||||
|
- `4xx` — ошибка клиента.
|
||||||
|
- `5xx` — ошибка сервера.
|
||||||
|
|
||||||
|
Частые коды:
|
||||||
|
|
||||||
|
- `200 OK` — запрос успешно обработан.
|
||||||
|
- `302 Found` — временное перенаправление.
|
||||||
|
- `400 Bad Request` — некорректный запрос.
|
||||||
|
- `403 Forbidden` — доступ запрещён.
|
||||||
|
- `404 Not Found` — ресурс не найден.
|
||||||
|
- `500 Internal Server Error` — внутренняя ошибка сервера.
|
||||||
|
|
||||||
|
## HTTPS
|
||||||
|
|
||||||
|
HTTPS использует TLS поверх TCP-соединения. Порт по умолчанию — `443`, у обычного HTTP — `80`.
|
||||||
|
|
||||||
|
Базовый смысл TLS:
|
||||||
|
|
||||||
|
- сервер предъявляет сертификат;
|
||||||
|
- клиент проверяет сертификат через центр сертификации;
|
||||||
|
- стороны согласуют ключи;
|
||||||
|
- дальнейший трафик шифруется и защищается от подмены.
|
||||||
|
|
||||||
|
SSL — устаревшее название семейства протоколов, в современных системах фактически используется TLS, но термин "SSL-сертификат" всё ещё распространён.
|
||||||
|
|
||||||
|
## HTTP/3
|
||||||
|
|
||||||
|
HTTP/3 работает поверх QUIC, а QUIC работает поверх UDP. QUIC объединяет надёжную доставку, шифрование TLS 1.3 и управление потоками.
|
||||||
|
|
||||||
|
Ключевые отличия:
|
||||||
|
|
||||||
|
| HTTP/2 | HTTP/3 |
|
||||||
|
|--------|--------|
|
||||||
|
| Поверх TCP | Поверх UDP/QUIC |
|
||||||
|
| TLS-хендшейк отдельно | TLS 1.3 встроен в QUIC |
|
||||||
|
| Потеря TCP-пакета может блокировать все потоки | Потеря пакета влияет только на конкретный поток |
|
||||||
|
| Соединение привязано к IP/порту | QUIC поддерживает connection migration через connection ID |
|
||||||
|
|
||||||
|
HTTP/3 не меняет смысл методов, заголовков и кодов ответа. Меняется транспортный слой.
|
||||||
|
|
||||||
|
## Связи
|
||||||
|
|
||||||
|
- [[TCP vs UDP]]
|
||||||
|
- [[IP-адрес]]
|
||||||
|
- [[DNS]]
|
||||||
|
- [[URI, URL, URN]]
|
||||||
|
- [[Сетевые порты]]
|
||||||
@@ -0,0 +1,75 @@
|
|||||||
|
---
|
||||||
|
title: URI, URL, URN
|
||||||
|
status: seed
|
||||||
|
type: concept
|
||||||
|
tags: [web, network, networking, uri, url, urn]
|
||||||
|
created: 2026-06-04
|
||||||
|
updated: 2026-06-04
|
||||||
|
source: "[[00_базовые_понятия.pdf]]"
|
||||||
|
aliases:
|
||||||
|
- URI, URL, URN
|
||||||
|
---
|
||||||
|
# URI, URL, URN
|
||||||
|
|
||||||
|
URI, URL и URN — способы идентифицировать ресурс. Для экзамена важно различать: URL указывает, где и как получить ресурс; URN даёт устойчивое имя; URI — общее понятие.
|
||||||
|
|
||||||
|
## URL
|
||||||
|
|
||||||
|
URL (Uniform Resource Locator) — адрес ресурса в сети и способ его получения.
|
||||||
|
|
||||||
|
Синтаксис:
|
||||||
|
|
||||||
|
```text
|
||||||
|
схема://хост:порт/путь?параметры#фрагмент
|
||||||
|
```
|
||||||
|
|
||||||
|
Пример:
|
||||||
|
|
||||||
|
```text
|
||||||
|
https://home.mephi.ru/study_groups?level=1&organization_id=1&term_id=20
|
||||||
|
```
|
||||||
|
|
||||||
|
Компоненты:
|
||||||
|
|
||||||
|
- схема — чаще всего `http` или `https`;
|
||||||
|
- хост — домен или IP-адрес;
|
||||||
|
- порт — необязателен, если используется порт по умолчанию;
|
||||||
|
- путь — расположение ресурса на сервере;
|
||||||
|
- query string — параметры после `?`;
|
||||||
|
- фрагмент — часть документа после `#`, часто соответствует `id` HTML-элемента.
|
||||||
|
|
||||||
|
## URN
|
||||||
|
|
||||||
|
URN (Uniform Resource Name) — имя ресурса без указания его сетевого расположения.
|
||||||
|
|
||||||
|
Синтаксис:
|
||||||
|
|
||||||
|
```text
|
||||||
|
urn:NID:NSS
|
||||||
|
```
|
||||||
|
|
||||||
|
Пример:
|
||||||
|
|
||||||
|
```text
|
||||||
|
urn:uuid:d5aa821e-52bb-4f7e-a782-7662ed5eaf5c
|
||||||
|
```
|
||||||
|
|
||||||
|
URN полезен, когда ресурс должен сохранять идентичность независимо от места хранения. Пример: ISBN книги.
|
||||||
|
|
||||||
|
## URI
|
||||||
|
|
||||||
|
URI (Uniform Resource Identifier) — общий идентификатор ресурса. URI может быть URL, URN или совмещать оба подхода.
|
||||||
|
|
||||||
|
Синтаксис:
|
||||||
|
|
||||||
|
```text
|
||||||
|
схема:[//[пользователь:пароль@]хост[:порт]][/]путь[?запрос][#фрагмент]
|
||||||
|
```
|
||||||
|
|
||||||
|
Главное правило: все URL являются URI, но не все URI являются URL.
|
||||||
|
|
||||||
|
## Связи
|
||||||
|
|
||||||
|
- [[HTTP, HTTPS и HTTP3]]
|
||||||
|
- [[DNS]]
|
||||||
|
- [[IP-адрес]]
|
||||||
@@ -0,0 +1,54 @@
|
|||||||
|
---
|
||||||
|
title: Сетевые порты
|
||||||
|
status: seed
|
||||||
|
type: concept
|
||||||
|
tags: [network, networking, ports, tcp, udp, web]
|
||||||
|
created: 2026-06-04
|
||||||
|
updated: 2026-06-04
|
||||||
|
source: "[[00_базовые_понятия.pdf]]"
|
||||||
|
aliases:
|
||||||
|
- Сетевые порты
|
||||||
|
---
|
||||||
|
# Сетевые порты
|
||||||
|
|
||||||
|
Сетевой порт — числовой идентификатор процесса или сервиса внутри одного IP-адреса. IP-адрес указывает хост, порт указывает приложение на этом хосте.
|
||||||
|
|
||||||
|
## Главное
|
||||||
|
|
||||||
|
- Порт — число от `0` до `65535`.
|
||||||
|
- Порты используются транспортными протоколами, прежде всего TCP и UDP.
|
||||||
|
- TCP-порт и UDP-порт с одинаковым номером не конфликтуют: это разные пространства портов.
|
||||||
|
- Для веба важно помнить: HTTP обычно использует TCP `80`, HTTPS — TCP `443`, альтернативный HTTP часто `8080`.
|
||||||
|
|
||||||
|
## Диапазоны
|
||||||
|
|
||||||
|
| Диапазон | Назначение |
|
||||||
|
|----------|------------|
|
||||||
|
| `0-1023` | Well-known/system ports. В Unix/Linux для привязки к ним обычно нужны повышенные права. |
|
||||||
|
| `1024-49151` | Registered ports. Могут быть зарегистрированы за службами. |
|
||||||
|
| `49152-65535` | Dynamic/private ports. Обычно используются клиентскими приложениями временно. |
|
||||||
|
|
||||||
|
## Частые порты
|
||||||
|
|
||||||
|
| Порт | Сервис |
|
||||||
|
|------|--------|
|
||||||
|
| `21` | FTP |
|
||||||
|
| `22` | SSH |
|
||||||
|
| `25` | SMTP |
|
||||||
|
| `53` | DNS |
|
||||||
|
| `80` | HTTP |
|
||||||
|
| `110` | POP3 |
|
||||||
|
| `123` | NTP |
|
||||||
|
| `143` | IMAP |
|
||||||
|
| `443` | HTTPS |
|
||||||
|
| `993` | IMAPS |
|
||||||
|
| `3306` | MySQL |
|
||||||
|
| `3389` | RDP |
|
||||||
|
| `8080` | альтернативный HTTP |
|
||||||
|
|
||||||
|
## Связи
|
||||||
|
|
||||||
|
- [[HTTP, HTTPS и HTTP3]]
|
||||||
|
- [[TCP vs UDP]]
|
||||||
|
- [[IP-адрес]]
|
||||||
|
- [[NAT]]
|
||||||
Reference in New Issue
Block a user