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.

Nota do Desenvolvedor: Todo o código foi escrito à mão, sem uso de frameworks pesados, garantindo um sistema leve e de fácil auditoria.

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.