gendesign/tradein-mvp/backend/app
bot-backend 5c559ed0e3 fix(tradein): SSRF host-allowlist на admin scrape + удалён dead ADMIN_TOKEN (Refs #756)
admin scrape-эндпоинты фетчили произвольный *_url без host-проверки (SSRF
defense-in-depth поверх RBAC). _assert_allowed_url(url): абсолютный URL с
не-allowlist хостом → 400; относительный путь → ok (хост подставляется
источником). Guard в 5 хендлерах (avito_house/avito_detail/yandex_detail/
cian_detail/cian_newbuilding). scrape_allowed_hosts в config (сверено со
scrapers/*.py — добавлены ekb.cian.ru, ekaterinburg.n1.ru). ADMIN_TOKEN
(0 чтений в коде) убран из docker-compose.prod.yml + DEPLOY.md. main.py RBAC
не тронут. 11 тестов pass, ruff clean.
2026-05-30 19:21:31 +03:00
..
api fix(tradein): SSRF host-allowlist на admin scrape + удалён dead ADMIN_TOKEN (Refs #756) 2026-05-30 19:21:31 +03:00
core fix(tradein): SSRF host-allowlist на admin scrape + удалён dead ADMIN_TOKEN (Refs #756) 2026-05-30 19:21:31 +03:00
observability feat(tradein): enrich GlitchTip SDK init — integrations + PII scrub (#396) (#643) 2026-05-29 09:23:17 +00:00
schemas docs(tradein): clarify n_analogs vs analogs[] top-10 cap (#698) (#737) 2026-05-30 15:00:48 +00:00
services fix(scrapers): stable dedup_hash — drop price_rub + strip URL query (Refs #753) (#761) 2026-05-30 16:10:27 +00:00
tasks feat(tradein): daily asking→sold ratio refresh (#648 S4) (#663) 2026-05-29 13:49:36 +00:00
__init__.py feat: add tradein-mvp subproject (Trade-In Estimator под /trade-in) 2026-05-21 00:25:39 +03:00
main.py feat(tradein): enrich GlitchTip SDK init — integrations + PII scrub (#396) (#643) 2026-05-29 09:23:17 +00:00