FastSitePHP\Security\Web\CsrfSession

Session-Based CSRF Tokens

Código Fonte

GitHub

Código de Exemplo

Segurança - CSRF utilizando Session

// Uma chamada para um função estática cria um token em Requisições GET e
// valida isso com Requisições POST, PUT, DELETE etc. Se não há erro com o
// token, então um exceção é lançada, o que causará uma resposta 500 com a
// página de erro.
\FastSitePHP\Security\Web\CsrfSession::setup($app);

// O token recebe um valor locals no Objeto da Aplicação
$token = $app->locals['csrf_token'];

// Isto permite que seja utilizado com código de modelo. Tokens são
// validados à partir por [setup()] mas não automaticamente adicionado a
// formulários, então eles devem ser adicionados através de modelos ou por
// código.
//
// <meta name="X-CSRF-Token" content="{{ $csrf_token }}">
// <input name="X-CSRF-Token" value="{{ $csrf_token }}">

// Um bom lugar para chamar esta função é nos filtros de rota das páginas
// que utilizam autenticação. Exemplo:

// Crie uma função filtro para atribuir para múltiplas rotas
$csrf_session = function() use ($app) {
    \FastSitePHP\Security\Web\CsrfSession::setup($app);
};

// Utilize a função quando definir uma rotaUse the function when defining a route
$app->get('/form', function() use ($app) {
    return $app->render('form.php');
})
->filter($csrf_session);

Métodos

setup(Application $app, $key = 'X-CSRF-Token')

Função Estática

Setup and validate session-based CSRF Tokens. A good place to call this function is on route filters of pages that use authentication.

This will assign the token to app property $app->locals['csrf_token'] which then must be included with the form or response. When using [$app->render()] the value will be available as variable [$csrf_token].

For usage see demo code.