Eventos bloqueados (24h)
0 Limite de requisições excedido
0 Entrada inválida rejeitada
0 Upload de recibo rejeitado
0 Tentativa de login falhada
0 Acesso sem sessão válida
0 Ação fora do papel do utilizador
0 Token CSRF ausente ou inválido
Últimos eventos registados
TipoDetalheOrigemQuando
Tentativa de login falhada Tentativa de login com telefone: felix@gmail.com ::**** 2026-09-10 11:06:33
Tentativa de login falhada Tentativa de login com telefone: felizardodee@gmail.com ::**** 2026-09-10 11:06:17
Tentativa de login falhada Tentativa de login com telefone: admin@multiplo.io ::**** 2026-09-10 11:05:48
Ação fora do papel do utilizador Utilizador #19 tentou enviar posição para a viagem #23, que não é sua ou já terminou. ::**** 2026-07-13 11:38:02
Ação fora do papel do utilizador Utilizador #19 tentou enviar posição para a viagem #23, que não é sua ou já terminou. ::**** 2026-07-13 11:37:01
Ação fora do papel do utilizador Utilizador #19 tentou enviar posição para a viagem #23, que não é sua ou já terminou. ::**** 2026-07-13 11:36:02
Ação fora do papel do utilizador Utilizador #19 tentou enviar posição para a viagem #23, que não é sua ou já terminou. ::**** 2026-07-13 11:35:02
Ação fora do papel do utilizador Utilizador #19 tentou enviar posição para a viagem #23, que não é sua ou já terminou. ::**** 2026-07-13 11:34:04
Ação fora do papel do utilizador Utilizador #19 tentou enviar posição para a viagem #23, que não é sua ou já terminou. ::**** 2026-07-13 11:33:09
Ação fora do papel do utilizador Utilizador #19 tentou enviar posição para a viagem #23, que não é sua ou já terminou. ::**** 2026-07-13 11:32:08
Ação fora do papel do utilizador Utilizador #19 tentou enviar posição para a viagem #23, que não é sua ou já terminou. ::**** 2026-07-13 11:31:04
Ação fora do papel do utilizador Utilizador #19 tentou enviar posição para a viagem #23, que não é sua ou já terminou. ::**** 2026-07-13 11:30:02
Ação fora do papel do utilizador Utilizador #19 tentou enviar posição para a viagem #23, que não é sua ou já terminou. ::**** 2026-07-13 11:29:02
Ação fora do papel do utilizador Utilizador #19 tentou enviar posição para a viagem #23, que não é sua ou já terminou. ::**** 2026-07-13 11:28:02
Ação fora do papel do utilizador Utilizador #19 tentou enviar posição para a viagem #23, que não é sua ou já terminou. ::**** 2026-07-13 11:27:03
Mitigações OWASP implementadas
API2:2023 — Broken Authentication
api/auth.php, includes/seguranca.php

Passwords guardadas com password_hash() (bcrypt) e verificadas com password_verify(); mensagem de erro genérica no login (não revela se foi o telefone ou a password); session_regenerate_id() após autenticar; cookie de sessão HttpOnly + SameSite=Lax.

API1/API5:2023 — Broken Object/Function Level Authorization
api/viagens.php, api/despesas.php, api/relatorio.php, api/veiculos.php

Todas as consultas confirmam que a viagem, o veículo ou a despesa pertencem ao motorista autenticado ou à frota do patrão autenticado antes de devolver dados. Só motoristas podem iniciar/finalizar viagens e lançar despesas; só patrões podem registar veículos e só veem a própria frota.

A03:2021 — Injection
includes/seguranca.php

Toda a entrada de texto, valores monetários e coordenadas passa por validação centralizada antes de chegar a qualquer query. Todas as queries usam PDO com prepared statements (ATTR_EMULATE_PREPARES=false), nunca concatenação de strings.

API4:2023 — Unrestricted Resource Consumption (upload)
includes/seguranca.php

Fotos de recibos: limite de 4 MB, tipo MIME verificado pelo conteúdo real do ficheiro (mime_content_type), nunca pela extensão enviada pelo cliente; nome do ficheiro sempre gerado pelo servidor (random_bytes); guardado numa pasta protegida por .htaccess e só servido de volta através de api/recibo.php, com verificação de dono.

API4:2023 — Unrestricted Resource Consumption (rede)
includes/seguranca.php, includes/scraping.php, includes/ia.php

Rate limiting de 20 req/60s por sessão em todos os endpoints da API. Chamadas HTTP externas (scraping e IA) têm timeout curto para nunca travar o servidor à espera de um serviço externo lento.

API8:2023 — Security Misconfiguration
config/config.php, config/conexao.php

display_errors desativado em produção; falhas de ligação à base de dados e à IA são registadas em log, mas o utilizador só recebe uma mensagem genérica. Chave da API do Groq nunca é enviada ao navegador.

A03:2021 — Injection (XSS)
index.php, motorista.php, assets/app.js

No servidor, toda a saída HTML passa por htmlspecialchars(). No cliente, o JavaScript insere dados da API exclusivamente via textContent/escaparHtml(), nunca via innerHTML direto com dados não filtrados.

CSRF (Cross-Site Request Forgery)
includes/seguranca.php, assets/app.js

Cookie de sessão com SameSite=Lax, mais um token CSRF de sessão (gerarTokenCsrf()) exposto ao cliente via <meta name="csrf-token">, enviado automaticamente no header X-CSRF-Token em todo pedido POST/PUT/DELETE, e validado com hash_equals() antes de qualquer alteração de estado.