Proteção CSRF
Na v4, use o helper csrf() em formulários PHP. Não existe mais a diretiva :csrf.
Token CSRF
<?= csrf() ?>Gera automaticamente <input type="hidden" name="_token" ...>.
Spoofing de método
Para PUT, PATCH e DELETE via POST:
<?= method('PUT') ?>
<?= method('PATCH') ?>
<?= method('DELETE') ?>Exemplo completo
<form action="<?= to('user.settings.update') ?>" method="POST">
<?= csrf() ?>
<?= method('PUT') ?>
<input type="text" name="display_name" value="<?= e(old('display_name')) ?>">
<button type="submit">Atualizar</button>
</form>API e webhooks
Rotas de API e webhooks não precisam de CSRF:
uri::post('/webhook/payment', [webhook_handler::class, 'handle'])
->name('webhooks.payment')
->without_csrf();⚠️Segurança
Em webhooks, sempre valide a origem da requisição (assinatura, IP, etc.).
Boas práticas
- Sempre
csrf()em forms que alteram dados - Nunca delete via GET
- Use
method('DELETE')para remoção - API: grupo com
without_csrf - Falha CSRF → HTTP 419