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 da FATEC-Assis.
1. Contexto do Projeto
- Título: SafePass Corporate - Gerador e Gestor de Senhas Temporárias.
-
Curso: Tecnologia em Gestão da Tecnologia da Informação.
-
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:
classDiagram
class PasswordGenerator {
+int length
+String charset
+generate() String
}
class PasswordEntry {
+int id
+String encryptedPassword
+String annotation
+DateTime createdAt
+save() void
}
PasswordGenerator ..> PasswordEntry : creates
3. Banco de Dados (MySQL)
3.1 Modelo Entidade-Relacionamento (MER)
Conforme sua solicitação de dados iniciais:
erDiagram
SENHA_GERADA {
int id_senha PK
string senha_texto
string anotacao
datetime data_hora_requisicao
}
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/HoraeAçõ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.fernetdo Python para não salvar a senha em “texto limpo” no MySQL. - Integração: Criar um endpoint API em Flask que permita que outros sistemas da empresa solicitem senhas temporárias automaticamente.
- 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.
flowchart LR
User(("Colaborador/Gestor"))
Audit(("Sistema de Auditoria"))
subgraph Sistema ["SafePass Corporate"]
direction TB
UC1(["Configurar Parâmetros de Senha"])
UC2(["Gerar Senha Aleatória"])
UC3(["Adicionar Anotação de Contexto"])
UC4(["Visualizar Histórico de Senhas"])
UC5(["Criptografar Dados em Repouso"])
end
User --> UC1
User --> UC2
User --> UC3
User --> UC4
UC2 -.->|<<include>>| UC5
Audit --> UC4
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.
classDiagram
class PasswordModel {
-String raw_password
-String encrypted_password
+generate_random(length: int)
+encrypt(key: String)
+decrypt(key: String)
}
class PasswordController {
+create_entry(length: int, note: String)
+get_all_entries()
}
class PasswordView {
+render_dashboard()
+display_password_list()
}
PasswordController --> PasswordModel : gerencia
PasswordController --> PasswordView : atualiza
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.
erDiagram
USUARIO ||--o{ SENHA : "gera"
SENHA {
int id_senha PK
string senha_criptografada
string sal_hash
string anotacao
datetime criado_em
}
3.2 Melhorias de Segurança Implementadas
- Criptografia em Repouso: As senhas não são salvas como
VARCHARcomum, mas sim criptografadas com a bibliotecacryptography.fernetantes doINSERTno MySQL. - 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. - Rastreabilidade: O campo
data_hora_requisicaofunciona 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 FATEC)
| Semana | Atividade Principal | Foco Técnico |
|---|---|---|
| S1 | Requisitos e Escopo | Definição de tamanhos de senha e tipos de anotação. |
| S2 | Modelagem de Dados | Criação do banco MySQL e tabelas de log. |
| S3 | Lógica de Backend | Implementação do gerador e criptografia em Python. |
| S4 | Interface Web | Desenvolvimento do dashboard em Flask com templates HTML/CSS. |
| S5 | Testes e Auditoria | Validaçã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,