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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions