# Relatório de Segurança 03 — DomPDF: desativar PHP embutido globalmente

- Data: 2026-06-10
- Severidade: Média (superfície de RCE)
- Status: Concluído

## 1. Risco

`config/dompdf.php` tinha `enable_php => true` globalmente. Com isso, qualquer PDF gerado pelo DomPDF que contivesse `<script type="text/php"> ... </script>` teria o PHP **executado** com os privilégios do processo web. Se conteúdo não confiável (ex.: descrição de chamado, campo HTML) entrasse num template de PDF, isso seria um vetor de RCE.

## 2. Investigação

Uso de `<script type="text/php">` em todo o projeto (apenas paginação estática e confiável):

- `resources/views/admin/indicadoresTi/reports/relatorio_pdf_resumido.blade.php`
- `resources/views/admin/indicadoresTi/reports/relatorio_pdf_matricial.blade.php`
- `resources/views/admin/indicadoresTi/reports/relatorio_pdf_detalhado.blade.php`

O conteúdo é fixo (numeração de páginas via `$pdf->page_text(...)`), sem dados do usuário.

`app/Http/Controllers/IndicadoresTi/IndicadoresTiRelatorioController.php` já habilita o recurso **por render**:

```php
$pdf = Pdf::loadView($view, $dados)
    ->setOptions([
        // ...
        'isPhpEnabled' => true,
    ]);
```

## 3. Decisão e alteração

`config/dompdf.php`: `enable_php => true` -> `enable_php => false`.

- Os 3 relatórios de Indicadores TI continuam funcionando porque o controller faz override por render com `isPhpEnabled => true`.
- Todos os demais PDFs passam a **não** executar PHP embutido (padrão seguro recomendado pelo próprio DomPDF).

## 4. Verificação

- `php -l config/dompdf.php`: sem erros.
- Recomendado em homologação: gerar os relatórios de Indicadores TI (resumido, detalhado, matricial) e confirmar a numeração de páginas no rodapé.

## 5. Recomendação de acompanhamento

Auditar os templates de PDF dos relatórios para garantir que dados de chamados/descrições entrem sempre com `{{ }}` (escape) e nunca com `{!! !!}`, já que esses são os PDFs com PHP habilitado por render.

## 6. Arquivos alterados

- `config/dompdf.php`
