Sichere REST-APIs mit PHP ohne Framework
Eine kleine PHP-JSON-API mit PDO, zufälligen Tokens und Berechtigungsprüfung je Objekt.
Eine kleine PHP-JSON-API mit PDO, zufälligen Tokens und Berechtigungsprüfung je Objekt.
Umfang
Ein öffentlicher Front-Controller verarbeitet GET, POST, PATCH und DELETE für /api/items und /api/items/{id}. Antworten sind JSON; unbekannte Methoden erhalten 405 mit Allow. Weitere PHP-Dateien dürfen nicht direkt über den Webserver erreichbar sein.
Authentifizierung
Zufällige Tokens mit random_bytes(32) erzeugen, nur einmal anzeigen und ausschließlich den SHA-256-Hash mit Benutzer, Ablauf und Widerruf speichern. Authorization: Bearer nur über HTTPS annehmen, den Hash parametrisiert abfragen und bei fehlenden oder ungültigen Daten 401 senden. Zugriffe begrenzen und Tokens nicht protokollieren.
Berechtigung und Eingaben
Jede Objektabfrage muss die ID des angemeldeten Nutzers enthalten, etwa WHERE id = :id AND user_id = :uid. Typen und Längen prüfen, beschreibbare Felder ausdrücklich wählen und PDO-Prepared-Statements nutzen. Ungültiges JSON (400), ungültige Felder (422), verbotene Aktionen (403) und fehlende Objekte (404) unterscheiden; interne Fehler verbergen.
Betrieb
Geheimnisse außerhalb des öffentlichen Verzeichnisses, minimale Datenbankrechte, Größenlimits, HTTPS und geschützte Logs vorsehen. CORS ersetzt keine Autorisierung. Zugriffe zwischen zwei Konten, abgelaufene Tokens und fehlerhafte Anfragen testen.
Quellen
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
Teilen
Was ist Ihre Reaktion?
Gefällt mir
0
Gefällt mir nicht
0
Liebe
0
Lustig
0
Wütend
0
Traurig
0
Wow
0