6 шагов (ТЗ 2.17): защищённые эндпоинты без токена → 401; /health и /connect/token анонимны; path-traversal на /uploads (закодированные ../) не отдаёт файлы ФС; SQL-инъекция в quick-search не роняет и не меняет данные; товар чужого тенанта → 404 (не 403/200); CORS не отражает чужой Origin. Багов в этих областях нет. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
25 lines
1.2 KiB
YAML
25 lines
1.2 KiB
YAML
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"
|