← PHP para aplicações reais
06 / 11 · 23 MIN

HTTP, sessões e autorização por recurso

Protege ações e objetos, não apenas a página de entrada.

Compreender o conceito

Autenticar uma sessão identifica o utilizador, mas cada operação ainda precisa de autorização. Um ID recebido pela URL não prova propriedade. Consulta ou verifica o recurso com o contexto do utilizador autenticado. Validar o token CSRF ajuda a proteger ações contra pedidos indevidos de outra origem, mas não substitui autorização.

Aplicar e decidir

Cookies de sessão devem usar atributos apropriados ao transporte e contexto. Após uma mudança de autenticação, gere a sessão segundo as recomendações do framework/PHP para reduzir fixação. Trata password hashing com as APIs adequadas. Escapar HTML, parametrizar SQL e validar autorização resolvem riscos diferentes: aplicar um deles não dispensa os outros.

Aplicação guiada no trabalho

Uma sessão identifica a conta, mas cada leitura ou alteração ainda deve aplicar a política do recurso. Inclui listas, exportações e contagens, para não enviar dados de outras contas e escondê-los apenas no browser. Um token CSRF válido não concede propriedade. Cookies também têm funções distintas: HttpOnly limita acesso por APIs de script, Secure restringe o envio a transporte seguro e SameSite contribui para controlar contextos de envio. Não trates um atributo como substituto dos restantes controlos. Após autenticação ou mudança de privilégio, segue o protocolo de renovação de sessão do framework/PHP e considera pedidos concorrentes e expiração. Uma renovação mal coordenada pode interromper utilizadores legítimos. Os exercícios são aplicações de princípios públicos, não uma política interna de qualquer banco.

NA PRÁTICA

/invoice?id=52 deve verificar se o utilizador pode aceder à fatura 52. Esconder a ligação na interface não protege o endpoint.

Armadilhas comuns

Autorizar só no browser; ignorar agregados; tratar CSRF ou HttpOnly como autorização.

Tópicos relacionados: Tipos e comparações explícitas · Arrays e funções com intenção

Leva esta ideia contigo

Acesso autorizado deve ser imposto no servidor em cada operação.

Criar conta

Referência: OWASP: Authorization · PHP 8.5 reference; DR PHP 2026.3; new fixtures executed on PHP 8.4.4 / SQLite 3.51.2