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, usando uma stack baseada em Python, Flask e MySQL.
Abaixo, apresenta-se a estrutura detalhada do projeto “SafePass Corporate”, seguindo os padrões acadêmicos usuais de um Projeto Integrador.
Curso: Tecnologia em Gestão da Tecnologia da Informação.
Disciplinas Integradas: Engenharia de Software + Banco de Dados.
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.
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
Conforme sua solicitação de dados iniciais:
erDiagram
SENHA_GERADA {
int id_senha PK
string senha_texto
string anotacao
datetime data_hora_requisicao
}
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
);
Para gerar a interface no Google Stitch, você pode utilizar este guia de componentes:
Senha (Oculta), Anotação, Data/Hora e Ações (Ver/Copiar/Excluir).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.
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.
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):
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
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
}
VARCHAR comum, mas sim criptografadas com a biblioteca cryptography.fernet antes do INSERT no MySQL.********), sendo reveladas apenas sob clique ou autenticação, garantindo conforto e segurança no ambiente interno.data_hora_requisicao funciona como uma trilha de auditoria para o uso empresarial.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
| 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,