Skip to content

Remover ou externalizar Flask secret_key hardcoded em app.py #18

Description

@samuelveigarangel

Contexto

Em src/spsvalidator/app.py, a aplicação define um secret_key fixo no código:

app.secret_key = "spsvalidator-local-secret"

Problema

  • O valor está hardcoded no repositório, o que pode ser sinalizado por ferramentas de segurança (ex.: detect-secrets).
  • Não segue a boa prática de manter segredos fora do código-fonte.
  • Se no futuro a aplicação passar a usar session, flash() ou proteção CSRF, uma chave fixa e pública representa risco de segurança.

Situação atual

Hoje o app não utiliza recursos que dependem de secret_key (sem session, sem flash, sem CSRF). O servidor roda localmente em 127.0.0.1, então o risco imediato é baixo — mas a linha permanece desnecessária ou frágil para evoluções futuras.

Proposta

Escolher uma das abordagens:

  1. Remover app.secret_key enquanto nenhum recurso do Flask depender de sessão assinada; ou
  2. Externalizar via variável de ambiente (ex.: SPSVALIDATOR_SECRET_KEY), com fallback seguro apenas para desenvolvimento local.

Exemplo (opção 2):

import os

app.secret_key = os.environ.get(
    "SPSVALIDATOR_SECRET_KEY",
    "dev-only-change-me",  # ou gerar aleatoriamente em runtime no modo dev
)

Critérios de aceite

  • Não há segredo fixo commitado em produção (ou está documentado como dev-only)
  • detect-secrets não aponta falso positivo não auditado para essa linha (se aplicável)
  • Comportamento atual da aplicação permanece inalterado

Arquivo afetado

  • src/spsvalidator/app.py (linha ~16)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions