Documentação Técnica
O BP VulnGuard é uma plataforma SaaS (Software as a Service) desenvolvida para orquestrar o ciclo de vida de vulnerabilidades de segurança. Diferente de soluções "no-code", este sistema foi arquitetado do zero utilizando PHP puro e práticas modernas de engenharia de software para garantir performance, segurança e escalabilidade.
Tech Stack
- PHP 8.2 (Backend)
- MySQL (Database)
- Tailwind CSS (UI)
- Chart.js (Analytics)
Arquitetura MVC Simplificada
O projeto segue uma estrutura organizada para separar a lógica de negócios da visualização, facilitando a manutenção.
/bp-vulnguard
├── /app # Lógica da Aplicação (Controllers + Views)
│ ├── auth_logic.php # Autenticação e Controle de Sessão
│ ├── vuln_logic.php # CRUD e Regras de Negócio
│ └── dashboard.php # View Principal
├── /config # Configurações Globais
│ └── db.php # Conexão PDO Segura
├── /uploads # Armazenamento de Evidências (Protegido)
└── index.php # Landing Page (Public)
Modelagem de Dados
Utilizamos um banco relacional robusto com chaves estrangeiras e deleção em cascata para integridade referencial.
CREATE TABLE vulnerabilities (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(200) NOT NULL,
cvss_score DECIMAL(3,1) NOT NULL, -- Ex: 9.8
severity ENUM('Baixo', 'Médio', 'Alto', 'Crítico') NOT NULL,
status ENUM('Novo', 'Em Correção', 'Mitigado') DEFAULT 'Novo',
due_date DATETIME NULL, -- Prazo calculado via SLA
created_by INT NOT NULL,
FOREIGN KEY (created_by) REFERENCES users(id) ON DELETE CASCADE
);
Segurança e PDO
Todas as interações com o banco utilizam Prepared Statements para prevenir SQL Injection, uma falha crítica comum em sistemas PHP legados.
// Exemplo de consulta segura em /app/auth_logic.php
$stmt = $pdo->prepare("SELECT id, password_hash FROM users WHERE email = :email");
$stmt->execute([':email' => $email]); // Bind seguro de parâmetros
$user = $stmt->fetch();
if ($user && password_verify($password, $user['password_hash'])) {
// Login Sucesso (Hash Argon2 ou Bcrypt)
}
Motor de Cálculo de SLA
O sistema possui uma inteligência embarcada para definir prazos automaticamente com base no score CVSS da vulnerabilidade, eliminando a subjetividade humana.
// Trecho de /app/vuln_logic.php
$cvss_score = floatval($_POST['cvss_score']);
$days_to_fix = 90; // Default
// Lógica de Negócio
if ($cvss_score >= 9.0) {
$severity = 'Crítico';
$days_to_fix = 1; // SLA: 24 horas para falhas críticas
} elseif ($cvss_score >= 7.0) {
$severity = 'Alto';
$days_to_fix = 7; // SLA: 7 dias
}
// Cálculo da Data Final
$due_date = date('Y-m-d H:i:s', strtotime("+$days_to_fix days"));
Isolamento de Dados (Multi-tenancy)
Para permitir que múltiplas empresas usem o sistema sem vazamento de dados, implementamos um isolamento lógico baseado em team_token.
// Exemplo de Query Blindada no Dashboard
$teamToken = $_SESSION['team_token'];
// O sistema NUNCA busca dados sem o filtro de time
$stmt = $pdo->prepare("
SELECT * FROM vulnerabilities v
JOIN users u ON v.created_by = u.id
WHERE u.team_token = ?
");
$stmt->execute([$teamToken]);
Documentação gerada automaticamente para o projeto BP VulnGuard.
Desenvolvido com ❤️ e PHP.