Skip to content

fix(login): redirect("") prendia o usuário no /login sem ?next= (regressão v1.31.0)#37

Merged
iscarelli merged 1 commit into
mainfrom
fix/login-empty-next-redirect
Jun 9, 2026
Merged

fix(login): redirect("") prendia o usuário no /login sem ?next= (regressão v1.31.0)#37
iscarelli merged 1 commit into
mainfrom
fix/login-empty-next-redirect

Conversation

@iscarelli

Copy link
Copy Markdown
Owner

Bug

Usuário relatou: após logout, ao logar com a senha certa, o botão "recarregava" a tela de login (e em alguns casos uma página Redirecting… target URL: em branco). Sem mensagem de senha errada. Removendo /login da URL, já estava logado — a sessão era criada, só o redirect ficava preso.

Causa (regressão da v1.31.0)

O fix de open redirect da 1.31.0 passou a validar o destino só por urlparse().netloc/.scheme. No login normal sem ?next=, o destino é "", que passa nesse teste e vira redirect("") — o navegador resolve isso recarregando a própria /login.

Fix

_promote_session só segue o next quando é um caminho relativo de verdade (começa com / e não //); sem next, vai pro dashboard. A barreira anti-open-redirect inline reconhecida pelo CodeQL é preservada.

  • app.py: guard do redirect pós-login
  • tests/test_security.py: teste de regressão test_login_without_next_goes_to_dashboard
  • VERSION 1.32.3 → 1.32.4 + CHANGELOG

Suíte completa: 105 passed.

🤖 Generated with Claude Code

…essão v1.31.0)

O fix de open redirect da 1.31.0 validava o destino só por netloc/scheme; a
string vazia (login sem ?next=) passava e virava redirect(""), que o navegador
resolve recarregando a própria /login — login "não acontecia" e nenhum erro
aparecia, embora a sessão fosse criada. Agora só segue o next quando é caminho
relativo de verdade (começa com "/" e não "//"); senão, dashboard. Barreira
anti-open-redirect do CodeQL preservada. + teste de regressão sem next.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@iscarelli iscarelli merged commit 289d2d4 into main Jun 9, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant