name: security-edge description: | Безопасность (ТЗ 2.17): защищённые эндпоинты требуют токен (401 без него), path-traversal на /uploads отбивается, SQL-инъекция в поиске безопасна (EF параметризует), доступ к сущности чужого тенанта → 404 (не 403, не утечка), CORS не отражает чужой Origin. preconditions: reset_db: true smoke_login_super_admin: true steps: - id: step01_protected_require_auth title: "Защищённые эндпоинты без токена → 401" - id: step02_anonymous_open title: "Анонимные эндпоинты (/health) доступны без токена" - id: step03_path_traversal_uploads title: "Path-traversal /uploads/..%2f..%2fetc/passwd → не 200 (404)" - id: step04_sql_injection_safe title: "SQL-инъекция в quick-search безопасна, таблица цела" - id: step05_tenant_404_not_403 title: "GET товара чужого тенанта → 404 (не 403, не 200)" - id: step06_cors_evil_origin title: "CORS не отражает Origin http://evil.com"