Skip to content

fix: security(downloader): не отправлять Authorization на внешние URL #240

Description

@ArtVsMark
## Цель

Устранить утечку OAuth Bearer token при скачивании внешних ZIP/GitHub-ссылок из текста задачи.

## Acceptance criteria

- [ ] Внешние URL скачиваются через отдельную `requests.Session()` без `Authorization`
- [ ] Для Stepik API сохраняется текущая авторизованная сессия
- [ ] Добавлен allowlist доменов для внешних загрузок (`github.com`, `raw.githubusercontent.com`, при необходимости другие явно разрешённые)
- [ ] Локальные/loopback/private-address URL отклоняются
- [ ] Есть тест, подтверждающий отсутствие `Authorization` на внешнем запросе

## Context

Аудит безопасности выявил confirmed High-severity проблему: `make_session()` кладёт Bearer-токен в headers всей `requests.Session`, а `downloader.py` использует ту же сессию для внешних ссылок из HTML задачи.

## Links

- Source finding: F-01
- Part of #146
- Part of #97

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions