| layout | ../../layouts/Layout.astro |
|---|---|
| title | Веб-протоколы и безопасность |
| description | Сетевые протоколы, HTTP, безопасность, аутентификация и авторизация |
| category | Основы и инструменты |
| kind | questions |
| order | 30 |
Что такое протокол? Какие протоколы знаешь?
|
Короткий ответ Протокол — это набор правил, по которым участники обмениваются сообщениями: формат данных, порядок действий и реакция на ошибки. Например, HTTP описывает обмен веб-запросами, TCP — надежную доставку байтов, а IP — маршрутизацию пакетов. Полный ответ Протокол задает контракт взаимодействия между независимыми системами. Обычно он определяет:
Протоколы работают слоями. Каждый слой решает свою задачу и использует нижележащий слой как транспорт:
Например, браузер может отправить HTTP-запрос через TLS и TCP поверх IP и Wi-Fi. HTTP не обязан знать, как Wi-Fi передает кадры, а Wi-Fi не обязан понимать HTTP-заголовки. Такое разделение позволяет менять реализацию одного слоя без полной переработки остальных. Важно различать протокол и продукт или API. REST — архитектурный стиль, gRPC — RPC-фреймворк и формат взаимодействия, который обычно использует HTTP/2, а JSON — формат данных. На интервью полезно не просто перечислить названия, а назвать уровень, задачу и один trade-off. Например: TCP гарантирует порядок и доставку, но имеет дополнительные задержки; UDP проще и быстрее, но надежность при необходимости реализует приложение. |
Чем отличается http от https?
|
Короткий ответ HTTPS — это HTTP поверх TLS. TLS шифрует трафик, проверяет его целостность и обычно подтверждает подлинность сервера с помощью сертификата. HTTP без TLS передает данные открыто. Полный ответ HTTP описывает структуру запросов и ответов: методы, URL, заголовки, тело и статус-коды. Сам по себе HTTP не защищает данные между клиентом и сервером. Посредник в сети может прочитать или изменить незашифрованный запрос. HTTPS использует тот же HTTP, но перед обменом прикладными данными устанавливает защищенный канал TLS. Он дает три основных свойства:
Во время TLS-handshake клиент и сервер согласуют параметры соединения, сервер предъявляет сертификат, а стороны получают общие сессионные ключи. Асимметричная криптография помогает безопасно договориться о ключах, после чего основной трафик шифруется быстрым симметричным алгоритмом. Практические отличия:
HTTPS не делает приложение автоматически безопасным. Он не защищает от XSS, SQL injection, утечки токена в логах или ошибочной авторизации. Защита действует только на участке TLS-соединения: после TLS-терминации на CDN или reverse proxy данные должны быть защищены уже инфраструктурой приложения. Также не всегда используется TCP. HTTP/1.1 и HTTP/2 обычно работают поверх TCP и TLS, а HTTP/3 — поверх QUIC, который использует UDP и включает TLS 1.3 в установление соединения. На интервью стоит сформулировать главное: HTTPS защищает канал передачи, но не заменяет безопасность самого приложения. |
Что такое авторизация и аутентификация?
|
Короткий ответ Аутентификация отвечает на вопрос «кто пользователь?», а авторизация — «что ему разрешено?». Сначала система подтверждает личность, затем проверяет права на конкретный ресурс или действие. Полный ответ Аутентификация подтверждает личность пользователя, сервиса или устройства. Для этого могут использоваться:
Несколько независимых факторов образуют MFA. Например, пароль относится к фактору знания, а аппаратный ключ — к фактору владения. Два разных пароля не считаются двумя факторами. После успешной аутентификации сервер создает сессию или выдает токен. Cookie, session id и JWT не являются авторизацией сами по себе: они только переносят подтверждение личности и иногда набор claims между запросами. Авторизация проверяет, разрешено ли уже известному субъекту выполнить конкретное действие. Распространенные модели:
Пример: сотрудник успешно вошел в систему — это аутентификация. Просмотр собственной заявки ему разрешен, а изменение чужой заявки запрещено — это авторизация. Во frontend можно скрыть недоступную кнопку, но это только часть UX. Настоящая проверка должна выполняться на сервере для каждого защищенного действия. Иначе пользователь сможет вызвать API напрямую. В HTTP часто используют такое различие:
На интервью полезно упомянуть принцип минимальных привилегий, отзыв сессий, срок жизни токенов и необходимость проверять доступ к конкретному объекту, а не только общую роль пользователя. |
Что происходит когда ты переходишь по Url?
|
Короткий ответ Браузер разбирает URL, проверяет кэши и Service Worker, находит IP через DNS, устанавливает защищенное соединение, отправляет HTTP-запрос, получает ответ и строит страницу из HTML, CSS и JavaScript. Полный ответ Реальный путь зависит от кэша, Service Worker, версии HTTP и настроек сети, но типичная последовательность выглядит так.
Современный браузер оптимизирует этот процесс: переиспользует соединения, выполняет preconnect и preload, а HTTP/2 и HTTP/3 позволяют передавать несколько потоков через одно соединение. Поэтому фраза «для каждого ресурса создается новое TCP-соединение» обычно неверна. На интервью сначала стоит дать последовательность |
Что такое шифрование данных?
|
Короткий ответ Шифрование преобразует открытые данные в шифротекст с помощью алгоритма и ключа. Прочитать данные может тот, у кого есть подходящий ключ для расшифрования. Полный ответ Шифрование используется для конфиденциальности данных при передаче и хранении. Без знания ключа шифротекст не должен раскрывать исходное сообщение, даже если алгоритм известен. Безопасная система полагается на секретность ключа, а не на секретность алгоритма. Основные виды:
Современные системы обычно применяют authenticated encryption: кроме конфиденциальности оно проверяет целостность и подлинность сообщения. Простого шифрования без проверки целостности может быть недостаточно, потому что атакующий иногда способен изменить шифротекст предсказуемым образом. Шифрование не нужно путать с другими операциями:
Главный практический риск — управление ключами. Сильный алгоритм не поможет, если ключ хранится рядом с данными, попадает в репозиторий или никогда не ротируется. В production используют secret manager или KMS, разграничивают доступ, планируют ротацию и резервное восстановление ключей. На интервью хороший ответ связывает шифрование с конкретной угрозой: TLS защищает данные в пути, disk encryption — при краже носителя, а application-level encryption может защищать отдельные поля даже от части инфраструктуры. |