Conn2Flow
Navegação das docs

Referência / Bibliotecas

Biblioteca seguranca.php

CSRF do painel, verificação de CAPTCHA (reCAPTCHA e Turnstile), checagem de User-Agent e IP da sessão, tokens aleatórios e normalização do retorno pós-login.

Caminho no Gestor bibliotecas/seguranca.php

Reúne as defesas de requisição do Gestor. O roteador a carrega em toda requisição, para validar o CSRF antes de qualquer módulo (ciclo de uma requisição).

CSRF

seguranca_csrf_requisicao_validar() roda em gestor_start() e só exige o token quando todas as condições valem:

  • o método é POST, PUT, PATCH ou DELETE;

  • a requisição traz o cookie de autenticação (COOKIE_AUTHNAME): formulários públicos de visitantes não passam por aqui e se protegem com CAPTCHA;

  • a rota não é isenta: _api/…, api/… e _gestor-csrf-token, além das exceções de transição do admin-atualizacoes para clientes anteriores à 2.9.25.

Falhou, a resposta é 403 com {"status":"error","code":"CSRF_INVALID_OR_EXPIRED",…}.

Função
gestor_csrf_token() O token da sessão (64 hex), criado na primeira chamada. Vai em <meta name="csrf-token"> e em gestor.csrfToken
seguranca_csrf_token_requisicao() Lê o token do cabeçalho X-CSRF-Token, do POST _csrf_token ou do $_REQUEST
gestor_csrf_validar($token, $esperado = null) Compara com hash_equals()
seguranca_csrf_token_resposta($ctx) Decide a resposta da rota _gestor-csrf-token/ (o global.js a usa para renovar um token vencido): 200 com o token, ou 401 AUTH_EXPIRED com X-Gestor-Auth-Redirect se o login expirou
seguranca_csrf_retorno_normalizar($r) Aceita só um caminho relativo (sem esquema, //, :, .. mesmo codificado, nem controles) para voltar depois do login

Em código próprio, formulários enviados por fetch/$.ajax já levam o token (o global.js o anexa). Num <form> HTML comum, inclua o campo:

<input type="hidden" name="_csrf_token" value="…valor de gestor_csrf_token()…">

CAPTCHA

gestor_captcha_validar($token = null, $opcoes = []) confere o token no provedor de CAPTCHA_PROVIDER (google-recaptcha, cloudflare-turnstile ou none, que sempre aprova).

  • Sem $token, lê cf-turnstile-response, g-recaptcha-response ou token do POST.

  • Opções: provider, secret, v2 (usa a chave do reCAPTCHA v2), action (exigida no v3: confere a ação e nota mínima 0,5), return_response, transport (injeção para testes).

  • Devolve o array de resposta do provedor em caso de sucesso, ou false. Tempo limite de 5 s.

No reCAPTCHA v3, a nota só é conferida quando action é passada: sem ela, qualquer token válido passa, mesmo de robô.

Sessão: User-Agent e IP

No login, seguranca_sessao_registrar() guarda na sessão o User-Agent (255 caracteres) e o bloco de IP (/24 no IPv4; o endereço inteiro no IPv6). A cada requisição autenticada, gestor_permissao_token() chama seguranca_sessao_validar(); divergiu, seguranca_sessao_invalidar() apaga o token de usuarios_tokens e o usuário volta ao login.

O IP usado é o REMOTE_ADDR cru, não o de ip_get(): atrás de proxy reverso, é sempre o IP do proxy e a checagem de IP não distingue ninguém.

Utilitários

  • seguranca_token_aleatorio($bytes = 32): hexadecimal com random_bytes(), mínimo de 16 bytes.

  • seguranca_ip_bloco($ip = null), seguranca_user_agent().

Auxiliares internos (usados pelas funções acima; raramente chamados direto): seguranca_csrf_rota_isenta(), seguranca_csrf_resposta_invalida_corpo(), seguranca_csrf_atualizador_transicao_isento(), seguranca_csrf_atualizador_status_isento(), seguranca_csrf_atualizador_sessao_legada_isento().

Funções

Gerado a partir de gestor/bibliotecas/seguranca.php · 18 funções

18 de 18

seguranca_ip_bloco

ver no código · linha 91 ↗
seguranca_ip_bloco(string|null $ip = null): string

Retorna o bloco de rede do IP (3 primeiros octetos no IPv4).

Parâmetros

$ipstring|null
IP a avaliar (padrão: REMOTE_ADDR).

Retorno

string
Bloco de rede (ex.: "200.100.50") ou o IP original.

seguranca_csrf_rota_isenta

ver no código · linha 213 ↗
seguranca_csrf_rota_isenta(array $caminho): bool

Informa se a rota usa autenticação M2M/Bearer e, portanto, não usa cookie de sessão. O canal distribuído é protegido por HMAC dentro do controlador da API.

Parâmetros

$caminhoarray
Segmentos normalizados da rota.

Retorno

bool

seguranca_csrf_token_resposta

ver no código · linha 260 ↗
seguranca_csrf_token_resposta(array $contexto): array

Decide a resposta da rota _gestor-csrf-token (req-175). Função PURA: o roteador só emite.

Parâmetros

$contextoarray
token, tem_cookie_auth, autenticado, url_raiz.

Retorno

array
['http' => int, 'headers' => array, 'corpo' => array]

seguranca_csrf_atualizador_sessao_legada_isento

ver no código · linha 381 ↗
seguranca_csrf_atualizador_sessao_legada_isento(array $caminho, array $requisicao, string|null $rootPath = null, int|null $agora = null): bool

Permite concluir uma sessao do autoatualizador iniciada por um cliente anterior ao CSRF. O SID aleatorio e o estado persistido limitam a isencao a uma transicao real, recente, inacabada e na etapa esperada.

Parâmetros

$caminhoarray
Segmentos normalizados da rota.
$requisicaoarray
Parametros recebidos pela requisicao.
$rootPathstring|null
Raiz fisica do Gestor (injetavel nos testes).
$agoraint|null
Timestamp atual (injetavel nos testes).

Retorno

bool

O Futuro é Híbrido: Humano + IA.

O Conn2Flow é a ferramenta. Se você precisa do Arquiteto para desenhar a estratégia da sua empresa usando essa tecnologia...

Contrate Consultoria Especializada