Перейти к основному содержимому

Веб-технологии и безопасность

REST API vs JSON-RPC​

  • REST (REpresentational State Transfer): Ресурсо-ориентированная архитектура, использующая стандартные HTTP-методы (GET, POST, PUT, DELETE). Не хранит состояние и задействует возможности HTTP, такие как кеширование.
  • JSON-RPC: Протокол, ориентированный на действия (вызов методов), а не на ресурсы. Как правило, использует POST для всех запросов и содержит имя метода и параметры в теле запроса.

Группы HTTP-статусов​

  • 1xx: Информационные.
  • 2xx: Успешные (например, 200 OK, 201 Created, 204 No Content).
  • 3xx: Перенаправление (например, 301 Moved Permanently, 302 Found, 304 Not Modified).
  • 4xx: Ошибка клиента (например, 400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found).
  • 5xx: Ошибка сервера (например, 500 Internal Server Error, 502 Bad Gateway, 503 Service Unavailable).

Безопасность (OWASP Top 10)​

Распространённые веб-уязвимости и способы их предотвращения:

  1. Инъекции (например, SQL Injection): Предотвращаются использованием подготовленных выражений и параметризованных запросов.
  2. Нарушение аутентификации (Broken Authentication): Используйте многофакторную аутентификацию и надёжное хеширование паролей (например, bcrypt, argon2).
  3. Межсайтовый скриптинг (XSS): Предотвращается экранированием всего пользовательского контента перед отображением в браузере.
  4. Межсайтовая подделка запроса (CSRF): Предотвращается использованием уникальных CSRF-токенов для всех запросов, изменяющих состояние.
  5. CORS (Cross-Origin Resource Sharing): Механизм безопасности, позволяющий серверу указывать, каким другим источникам разрешён доступ к его ресурсам.

Аутентификация vs Авторизация​

  • Аутентификация: Проверка того, кто является пользователь (например, вход в систему).
  • Авторизация: Проверка того, что пользователю разрешено делать (например, разрешения, роли).

JWT (JSON Web Tokens)​

JWT — это компактный, URL-безопасный формат представления утверждений (claims) между двумя сторонами.

  • Срок действия: JWT должны иметь claim exp для истечения срока действия через определённое время.
  • Отзыв: Поскольку JWT не хранят состояние, отозвать их сложно. Распространённые стратегии:
    • Короткий TTL: Используйте очень короткое время жизни токена.
    • Refresh-токены: Используйте постоянный refresh-токен для выпуска новых JWT.
    • Чёрный список (Deny-list): Храните список отозванных токенов в быстром хранилище вроде Redis.
    • Ротация версий/ключей: Увеличивайте номер версии в объекте пользователя и включайте его в JWT; если они не совпадают — токен недействителен.