В каких компонентах системы реализуется и тестируется авторизация?

«В каких компонентах системы реализуется и тестируется авторизация?» — вопрос из категории Тестирование безопасности, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

Типичные места реализации и тестирования:

  1. Веб-интерфейс: Кнопки, меню, страницы, которые должны скрываться или блокироваться.
  2. API (Backend): Основной рубеж защиты. Каждый эндпоинт, требующий аутентификации, должен проверять права вызывающего.
    • Механизмы: JWT-токены, OAuth2, API-ключи, сессии.
  3. Мобильные и десктопные приложения: Локальная проверка прав, хранение токенов.
  4. Базы данных и микросервисы: Ролевая модель доступа (RBAC) на уровне данных или сервисов.

Пример теста авторизации для API на Python (pytest + requests):

import pytest
import requests

API_URL = "https://api.example.com"

def test_admin_can_access_users_list():
    headers = {"Authorization": "Bearer {admin_token}"}
    response = requests.get(f"{API_URL}/users", headers=headers)
    assert response.status_code == 200

def test_user_cannot_access_users_list():
    headers = {"Authorization": "Bearer {user_token}"}
    response = requests.get(f"{API_URL}/users", headers=headers)
    # Ожидаем отказ в доступе
    assert response.status_code == 403

def test_unauthenticated_request_is_rejected():
    response = requests.get(f"{API_URL}/users")
    assert response.status_code == 401

Ключевые аспекты тестирования: Проверка граничных случаев (истекший токен), вертикальный и горизонтальный доступ (может ли пользователь редактировать чужой ресурс?), защита от перебора (rate limiting).