Веб-безопасность
XSS, CSRF, защита кук, JWT и авторизация.
7 вопросов
JuniorТеорияОчень частоВ чём разница между аутентификацией и авторизацией?
В чём разница между аутентификацией и авторизацией?
Аутентификация проверяет, КТО вы — логин/пароль, биометрия, токен. Авторизация решает, ЧТО уже подтверждённой личности разрешено делать — её права на действия и ресурсы. Сначала идёт аутентификация, затем авторизация.
Типичные ошибки
- ✗Считать аутентификацию и авторизацию одним и тем же
- ✗Менять их местами — думать, что авторизация проверяет личность
- ✗Полагать, что авторизация может идти до аутентификации
Уточняющие вопросы
- →Где здесь место ролевой модели доступа (RBAC)?
- →Может ли запрос быть аутентифицирован, но не авторизован?
JuniorТеорияОчень частоЧто такое XSS (межсайтовый скриптинг)?
Что такое XSS (межсайтовый скриптинг)?
XSS — это уязвимость инъекции, когда ввод атакующего попадает в страницу без экранирования, и браузер исполняет его как HTML/JS. Комментарий с <script> срабатывает у каждого зрителя, позволяя красть куки или менять страницу.
Типичные ошибки
- ✗Путать
XSSс серверной SQL-инъекцией - ✗Считать, что
XSSтребует скачивания файла для срабатывания - ✗Думать, что
XSSбьёт только по атакующему, а не по зрителям
Уточняющие вопросы
- →Чем хранимый
XSSотличается от отражённого? - →Почему
HttpOnlyослабляет кражу куки черезXSS?
MiddleТеорияЧастоЧто такое JWT?
Что такое JWT?
JSON Web Token — компактная строка header.payload.signature в base64url, несущая claims, обычно для stateless-аутентификации. Она ПОДПИСАНА (HMAC/RSA), но НЕ зашифрована, так что держащий её читает payload.
Типичные ошибки
- ✗Считать payload зашифрованным и потому секретным
- ✗Думать, что подпись — это или содержит пароль пользователя
- ✗Полагать, что сервер должен хранить токен для проверки
Уточняющие вопросы
- →Чем отличается подпись
HMACотRSAв этом случае? - →Где в браузере хранить
JWTи почему?
SeniorТеорияИногдаКакие распространённые ошибки безопасности JWT?
Какие распространённые ошибки безопасности JWT?
Payload лишь закодирован в base64url, не зашифрован — не кладите туда секреты. Проверяйте подпись и фиксируйте ожидаемый alg против alg:none и путаницы HMAC/RSA. Токен не отозвать до истечения без доп. состояния.
Типичные ошибки
- ✗Хранить секреты в payload, надеясь, что подпись их скроет
- ✗Принимать
algиз заголовка токена вместо фиксации одного - ✗Считать, что
JWTотзывается мгновенно без доп. состояния
Уточняющие вопросы
- →Как именно срабатывает атака
alg:none? - →Как реализовать практичный отзыв токенов?
SeniorТеорияИногдаКак защищаться от XSS?
Как защищаться от XSS?
Экранируйте данные под контекст вывода (HTML, атрибут, JS, URL), санитизируйте разрешённый HTML проверенной библиотекой, задайте Content-Security-Policy для ограничения скриптов и помечайте куки HttpOnly.
Типичные ошибки
- ✗Полагаться на одни лишь лимиты длины ввода против
XSS - ✗Экранировать на входе, а не под контекст вывода
- ✗Считать, что HTTPS или TLS предотвращает
XSS
Уточняющие вопросы
- →Что именно ограничивает строгий
Content-Security-Policy? - →Почему экранирование должно совпадать с контекстом вывода?