APIs REST seguras em PHP sem framework

Uma pequena API JSON didática com PDO, tokens opacos e autorização por recurso.

APIs REST seguras em PHP sem framework

Uma pequena API JSON didática com PDO, tokens opacos e autorização por recurso.

Escopo

Um controlador público único atende GET, POST, PATCH e DELETE em /api/items e /api/items/{id}. Responda em JSON e use 405 com Allow para métodos não aceitos. Não exponha outros arquivos PHP pelo servidor web.

Autenticação

Gere tokens aleatórios com random_bytes(32), mostre cada valor apenas uma vez e guarde só o hash SHA-256 com usuário, expiração e revogação. Aceite Authorization: Bearer via HTTPS, consulte o hash com parâmetros e retorne 401 para credenciais ausentes ou inválidas. Limite tentativas sem registrar tokens.

Autorização e entrada

Cada consulta de item deve filtrar pelo usuário autenticado, como WHERE id = :id AND user_id = :uid. Valide tipos e tamanhos, escolha explicitamente campos alteráveis e use instruções preparadas PDO. Diferencie JSON malformado (400), dados inválidos (422), operação proibida (403) e objeto ausente (404), sem expor erros internos.

Publicação

Mantenha segredos fora da pasta pública, conceda direitos mínimos ao usuário SQL, limite o tamanho da requisição, exija HTTPS e proteja logs. CORS não substitui autorização. Teste acesso entre contas, tokens vencidos e cargas inválidas.

Fontes

https://www.php.net/manual/en/book.pdo.php ; https://www.php.net/manual/en/function.random-bytes.php ; https://cheatsheetseries.owasp.org/cheatsheets/REST_Security_Cheat_Sheet.html

Partilhar

Qual é a sua reação?

Gosto Gosto 0
Não gosto Não gosto 0
Adoro Adoro 0
Divertido Divertido 0
Irritado Irritado 0
Triste Triste 0
Uau Uau 0