Eventos bloqueados (24h)
Últimos eventos registados
| Tipo | Detalhe | Origem | Quando |
|---|---|---|---|
| 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
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
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
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)
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)
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
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)
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)
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.