🔐 Projeto 02: Gerador de Senhas

README

Este é um excelente tema para um Projeto Integrador, pois une a lógica de programação de algoritmos de segurança com a persistência de dados e o desenvolvimento web, seguindo o padrão de stacks que você costuma lecionar e desenvolver (Python, Flask e MySQL).

Abaixo, apresento a estrutura detalhada do projeto "SafePass Corporate", formatada para os padrões acadêmicos do curso.


1. Contexto do Projeto

  • Título: SafePass Corporate - Gerador e Gestor de Senhas Temporárias.

Disciplinas Integradas: Engenharia de Software + Banco de Dados.

  • Problema: Insegurança no compartilhamento de senhas pessoais/mestres entre colaboradores e dificuldade em gerir múltiplas senhas com requisitos variados.
  • Objetivo: Prover uma ferramenta interna para geração de senhas aleatórias seguras, com armazenamento em banco de dados para consulta posterior e campos de anotação para contexto de uso.

2. Engenharia de Software

2.1 Requisitos Funcionais (RF)

  • RF-001: O sistema deve permitir que o usuário defina o comprimento da senha (quantidade de caracteres).
  • RF-002: O sistema deve gerar uma senha aleatória que inclua letras, números e símbolos.
  • RF-003: O sistema deve permitir salvar a senha gerada vinculada a uma anotação.
  • RF-004: O sistema deve registrar automaticamente a data e hora da criação da senha.
  • RF-005: O sistema deve listar todas as senhas salvas para visualização do usuário.

2.2 Requisitos Não Funcionais (RNF)

RNF-001 (Segurança): As senhas devem ser exibidas de forma protegida (ex: campo "password" ou máscara) na listagem inicial.

RNF-002 (Integridade): Uso de Prepared Statements (via Flask-MySQLdb ou SQLAlchemy) para evitar SQL Injection.

RNF-003 (Usabilidade): Interface responsiva para que o gestor possa gerar senhas via dispositivo móvel.

2.3 Orientação a Objetos (UML Mermaid)

Utilizando os princípios de SOLID e Clean Code que você aplica em suas aulas, a modelagem segue:


3. Banco de Dados (MySQL)

3.1 Modelo Entidade-Relacionamento (MER)

Conforme sua solicitação de dados iniciais:

3.2 Script DDL (Criação das Tabelas)

CREATE DATABASE safepass_db;
USE safepass_db;

CREATE TABLE senhas (
    id_senha INT AUTO_INCREMENT PRIMARY KEY,
    senha_texto VARCHAR(255) NOT NULL,
    anotacao TEXT,
    data_hora_requisicao DATETIME DEFAULT CURRENT_TIMESTAMP
);

4. Protótipo da Interface (Sugestão para Google Stitch)

Para gerar a interface no Google Stitch, você pode utilizar este guia de componentes:

  • Cores: Estilo "Dark Mode" ou "Corporate Blue" para transmitir segurança.
  • Layout:
  • Topo: Título "SafePass" e contador de senhas ativas.
  • Centro: Slider para escolher o tamanho da senha (8 a 32 caracteres) e botão "Gerar e Salvar".
  • Baixo: Tabela/Grid com as colunas: Senha (Oculta), Anotação, Data/Hora e Ações (Ver/Copiar/Excluir).

5. Próximos Passos (Sugestão de Pedagogia)

Como este projeto foca em segurança interna empresarial:

Segurança Adicional: Sugerir aos alunos o uso da biblioteca cryptography.fernet do Python para não salvar a senha em "texto limpo" no MySQL.

  1. Integração: Criar um endpoint API em Flask que permita que outros sistemas da empresa solicitem senhas temporárias automaticamente.
  2. Refatoração: Aplicar o padrão MVC (Model-View-Controller), separando as rotas do Flask (Controller) da lógica do banco de dados (Model).

Este projeto está pronto para ser inserido no seu ecossistema de repositórios do Jekyll/MkDocs.


Com base nas diretrizes de Engenharia de Software e nos princípios de segurança para sistemas internos, apresento o detalhamento técnico avançado do projeto SafePass Corporate. Esta versão incorpora as melhorias de criptografia e arquitetura MVC para garantir que o sistema seja robusto para o ambiente empresarial.


2. Engenharia de Software (Avançada)

2.4 Diagrama de Casos de Uso

O diagrama ilustra as interações focadas na privacidade. O "Gestor" pode gerar senhas para colaboradores sem expor sua própria senha mestra.

Versão em SVG (Diagrama de Casos de Uso):

2.5 Arquitetura de Classes (Padrão MVC)

Para este projeto, estruturamos as classes separando a lógica de geração (Model) da interface e controle, conforme as boas práticas de Clean Code.


3. Banco de Dados e Segurança

3.1 MER (Modelo Entidade-Relacionamento)

O modelo foi expandido para incluir o campo de hash/criptografia, garantindo que, mesmo em caso de vazamento do banco, as senhas não estejam em texto claro.

3.2 Melhorias de Segurança Implementadas

  1. Criptografia em Repouso: As senhas não são salvas como VARCHAR comum, mas sim criptografadas com a biblioteca cryptography.fernet antes do INSERT no MySQL.
  2. Mascaramento de Interface: Na visualização ampla, as senhas aparecem ocultas (ex: ********), sendo reveladas apenas sob clique ou autenticação, garantindo conforto e segurança no ambiente interno.
  3. Rastreabilidade: O campo data_hora_requisicao funciona como uma trilha de auditoria para o uso empresarial.

4. Implementação da Lógica em Python (Flask)

Como você utiliza o ecossistema Python/Flask em suas aulas e projetos, a lógica principal de geração utiliza a biblioteca secrets, que é criptograficamente segura:

import secrets
import string

def generate_safe_password(length):
    # Unifica letras, números e símbolos conforme o requisito
    alphabet = string.ascii_letters + string.digits + string.punctuation
    password = ''.join(secrets.choice(alphabet) for i in range(length))
    return password

5. Cronograma de Desenvolvimento (Sugestão)

SemanaAtividade PrincipalFoco Técnico
S1Requisitos e EscopoDefinição de tamanhos de senha e tipos de anotação.
S2Modelagem de DadosCriação do banco MySQL e tabelas de log.
S3Lógica de BackendImplementação do gerador e criptografia em Python.
S4Interface WebDesenvolvimento do dashboard em Flask com templates HTML/CSS.
S5Testes e AuditoriaValidação da persistência e segurança dos dados salvos.

Este detalhamento está pronto para ser incorporado ao seu fluxo de documentação em Markdown.sim,

Copyright © 2026