Kyrux
Voltar

CSRF

O CSRF é validado automaticamente em POST, PUT, PATCH e DELETE.

Em formulários HTML

<form method="POST" action="{{ url "criar_post" }}">
  {{ csrf_token }}
  <input type="text" name="titulo" placeholder="Título">
  <button type="submit">Publicar</button>
</form>

O {{ csrf_token }} injeta automaticamente:

<input type="hidden" name="kyrux_csrf_token" value="abc123...">

Em requisições AJAX

O token enviado deve ser o valor assinado — o mesmo que {{ csrf_token }} injeta no hidden input (o cookie kyrux_csrf guarda o valor bruto, que não é aceito). Leia do input renderizado na página:

const token = document.querySelector('input[name="kyrux_csrf_token"]').value;

fetch('/api/posts/', {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json',
        'X-CSRF-Token': token,
    },
    body: JSON.stringify({ titulo: 'Meu Post' }),
});

Isentar rotas de API (Bearer token)

APIs autenticadas por JWT (RequireAuth) não usam cookies — isente o prefixo da validação CSRF no Register do app:

import "kyrux/core/security/csrf"

csrf.Exempt("/api/")