APIs REST seguras em PHP sem framework
Uma pequena API JSON didática com PDO, tokens opacos e autorização por recurso.
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
0
Não gosto
0
Adoro
0
Divertido
0
Irritado
0
Triste
0
Uau
0