Curso de Bacharelado em Cibersegurança (Turma 8° U)
Prof.: Pedro Horchulhack
Aluno: Nicolas Greskiv, Nilson Junior
DevSecOps
Planejamento e análise de requisitos
Curitiba-Pr, 08 de setembro de 2024
1. Requisitos Funcionais
1. Autenticação de Usuários: O sistema deve permitir que os usuários se
autentiquem por meio de login e senha.
2. Recuperação de Senha: O sistema deve permitir a recuperação de
senha via e-mail.
3. Cadastro de Usuários: O sistema deve permitir o cadastro de novos
usuários.
4. Edição de Usuário: O sistema deve permitir a edição de informações
de perfil do usuário.
5. Exclusão de Usuário: O sistema deve permitir a exclusão de contas de
usuários, com uma confirmação de exclusão.
6. Gerenciamento de Perfis: O sistema deve permitir que os usuários
editem seus perfis, incluindo informações pessoais e de contato.
7. Exclusão de Perfis: O sistema deve permitir que os administradores
excluam perfis de usuários, caso necessário.
8. Cadastro de Perfil: O sistema deve permitir o cadastro de perfis
associados aos usuários.
9. Autorização por Nível de Acesso: O sistema deve permitir diferentes
níveis de acesso, como usuários comuns e administradores.
10. Listagem de Dados: O sistema deve listar registros de uma entidade
(por exemplo, produtos ou usuários) com paginação para facilitar a
navegação.
11. Criação de Registros: O sistema deve permitir a criação de novos
registros, como adicionar novos produtos ou entradas de dados.
12. Edição de Registros: O sistema deve permitir a edição de registros
existentes para atualizar informações.
13. Exclusão de Registros: O sistema deve permitir a exclusão de
registros, com confirmação antes da exclusão definitiva.
14. Sistema de Auditoria: O sistema deve registrar todas as atividades de
usuários, como login, alterações de dados e exclusão de registros, em
logs.
15. Visualização de Logs: O sistema deve permitir que administradores
visualizem logs de atividades para auditorias e verificações.
16. Segurança na Transmissão de Dados: Todos os dados sensíveis
devem ser transmitidos utilizando protocolos seguros, como HTTPS.
17. Validação de Formulários: Todos os formulários devem realizar
validações no lado cliente (ex.: campos obrigatórios) e no servidor (ex.:
verificação de dados).
18. Integração com Sistemas Externos: O sistema deve se integrar com
APIs de terceiros para funcionalidades como pagamento ou
autenticação via redes sociais.
19. Comentários em Postagens: Os usuários devem poder comentar em
postagens ou artigos disponibilizados na plataforma.
20. Sistema de Feedback: O sistema deve permitir a coleta de feedback
dos usuários sobre sua experiência no uso da aplicação.
2. Requisitos Não Funcionais
1. Escalabilidade: O sistema deve suportar o aumento de usuários e
dados sem comprometer o desempenho.
2. Desempenho: A aplicação deve carregar as páginas em menos de 2
segundos para usuários com conexão de internet de alta velocidade.
3. Compatibilidade de Navegador: Suporte para os principais
navegadores (Chrome, Firefox, Edge, Safari).
4. Responsividade: A interface deve ser otimizada para diferentes
resoluções de tela, incluindo dispositivos móveis e tablets.
5. Manutenibilidade: O código deve ser modular e bem documentado
para facilitar futuras manutenções.
6. Conformidade com LGPD: O sistema deve seguir as diretrizes da Lei
Geral de Proteção de Dados (LGPD) para coleta, armazenamento e
processamento de dados.
7. Monitoramento de Uso: O sistema deve incluir uma infraestrutura de
monitoramento para analisar o desempenho e detectar problemas em
tempo real.
3. Modelo de Adversário
1. Sequestro de Sessão:
o Descrição: Um atacante rouba ou se apodera do token de sessão
de um usuário para assumir a identidade deste usuário na
aplicação.
2. Phishing de Login:
o Descrição: Um atacante cria uma página de login falsa para
capturar credenciais de usuários ao enganá-los a inserir suas
informações de login.
3. Falsificação de IP:
o Descrição: Um atacante falsifica o endereço IP das requisições
para parecer que está se conectando a partir de uma fonte
confiável.
4. Injeção de SQL:
o Descrição: Um atacante injeta comandos SQL maliciosos nas
entradas de dados da aplicação para manipular o banco de
dados.
5. Manipulação de Dados no Lado do Cliente:
o Descrição: Um atacante altera os dados enviados pelo lado do
cliente para modificar o comportamento da aplicação ou
comprometer dados.
6. Falta de Logs Adequados:
o Descrição: A ausência de registros detalhados de atividades pode
permitir que ações maliciosas passem despercebidas e não
sejam auditadas.
7. Exposição de Dados Sensíveis:
o Descrição: Dados confidenciais podem ser expostos devido a
falhas na segurança ou configuração inadequada de acesso aos
dados.
8. Escalada de Privilégios:
o Descrição: Um atacante usa vulnerabilidades ou erros de
configuração para obter privilégios elevados dentro da aplicação,
além daqueles que lhe foram inicialmente concedidos.
4. Contexto da Aplicação
O projeto é uma aplicação web que requer funcionalidades robustas para
autenticação, gerenciamento de dados e interação social. O sistema é
projetado para ser seguro, escalável e eficiente, com suporte a múltiplos
navegadores e dispositivos.
5. Arquitetura Utilizada
A arquitetura escolhida para este projeto é a Arquitetura MVC (Model-View-
Controller). Esta arquitetura divide a aplicação em três camadas principais:
1. Model: Representa a camada de dados e lógica de negócios,
responsável pela manipulação e persistência dos dados.
2. View: Responsável pela apresentação dos dados ao usuário e pela
renderização da interface da aplicação.
3. Controller: Atua como intermediário entre o Model e a View,
processando solicitações do usuário e atualizando a View com base nas
alterações no Model.
6. Tecnologias e Bibliotecas
Backend (Java)
• Spring Framework:
o Spring Boot: Simplifica a configuração e o desenvolvimento da
aplicação.
o Spring MVC: Implementa o padrão MVC para separar a lógica de
negócios da apresentação.
o Spring Data JPA: Facilita a persistência de dados com uma
abordagem orientada a objetos.
o Spring Security: Gerencia autenticação e autorização de
usuários.
• Banco de Dados:
o MySQL ou PostgreSQL: Sistemas de gerenciamento de banco de
dados relacionais para a persistência de dados.
o Hibernate: Alternativa para ORM (Mapeamento Objeto-
Relacional), se não usar o Spring Data JPA.
• Outras Bibliotecas:
o JUnit e Mockito: Para testes unitários e de integração.
o Log4j ou SLF4J: Para logging.
Frontend
• HTML/CSS:
o HTML5: Estrutura a página web.
o CSS3: Define o estilo e layout da aplicação.
• Bootstrap:
o Bootstrap: Framework para criar uma interface responsiva e
moderna, com componentes e estilos pré-construídos.
• JavaScript:
o jQuery: Manipulação de DOM e chamadas AJAX (se necessário).
o Axios ou Fetch API: Para chamadas HTTP assíncronas.
Integração
• RESTful APIs:
o Spring Boot: Criação de APIs RESTful que podem ser
consumidas pelo frontend.
• Ferramentas de Build e Gerenciamento:
o Maven ou Gradle: Para gerenciamento de dependências e
construção do projeto.
o Git: Controle de versão do código.
• Ambiente de Desenvolvimento e Implantação:
o IDE: IntelliJ IDEA ou Eclipse para desenvolvimento em Java.
o Docker: Containerização da aplicação, facilitando
desenvolvimento e deployment.
o Jenkins ou GitHub Actions: Para integração contínua e pipelines
de CI/CD.
7. Estrutura de Diretórios
A estrutura recomendada para o projeto é a seguinte:
• Camada de Apresentação: HTML, CSS, Bootstrap
• Camada de Controle: Spring MVC Controllers
• Camada de Serviço: Serviços Spring para lógica de negócios
• Camada de Persistência: Repositórios Spring Data JPA/Hibernate
8. Criar repositório no GitHub para o projeto
o Criar quadro Kanban no GitHub para delegar funções aos
integrantes
[Link]
9. Banco de Dados
CREATE TABLE usuarios (
id_usuario INT AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL UNIQUE,
senha VARCHAR(255) NOT NULL,
perfil VARCHAR(50) NOT NULL, -- Ex: 'usuario', 'administrador'
data_criacao TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
data_modificacao TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON
UPDATE CURRENT_TIMESTAMP
);
CREATE TABLE perfis (
id_perfil INT AUTO_INCREMENT PRIMARY KEY,
id_usuario INT,
descricao TEXT,
FOREIGN KEY (id_usuario) REFERENCES usuarios(id_usuario)
);
CREATE TABLE logs (
id_log INT AUTO_INCREMENT PRIMARY KEY,
id_usuario INT,
acao VARCHAR(255),
data_acao TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
ip_usuario VARCHAR(45),
FOREIGN KEY (id_usuario) REFERENCES usuarios(id_usuario)
);
CREATE TABLE comentarios (
id_comentario INT AUTO_INCREMENT PRIMARY KEY,
id_usuario INT,
id_postagem INT,
comentario TEXT,
data_criacao TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (id_usuario) REFERENCES usuarios(id_usuario)
);
CREATE TABLE feedback (
id_feedback INT AUTO_INCREMENT PRIMARY KEY,
id_usuario INT,
comentario TEXT,
data_feedback TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (id_usuario) REFERENCES usuarios(id_usuario)
);