Aus der Aufgabenstellung geht nicht so ganz hervor, ob es wirklich gewünscht ist, dass jemand anonym auf diesen Webservice zugriff hat. Sollte dies nicht gewünscht sein, so würde sich ein htaccess Schutz der URL anbieten. Damit würde jegliche unbefugte Nutzung unterbunden.
Für die öffentliche Nutzung habe ich folge Vorschläge:
Limitierung der GET/POST Requests auf z.B. 5 pro Minute
Verhindert das maschinelle Auslesen von Profile durch einen Crawler.
Implementierung erfolgt idealerweise in der Schicht des Webservers. z.B. mod_security beim Apache2.
POST Request nur nach vorheriger Authentifizierung
Ich kann nur die Daten verändern, die meiner User ID entsprechen.
<?php
.....
if ( intval( $_POST['id'] ) !== intval( $_SESSION['user_id'] ) ) {
die( 'Access denied!' );
}
Validierung von Parametern
Verhindern von unvollständigen nicht korrekten Daten.
<?php
.....
if ( strlen( $_POST['firstname'] ) === 0 ) {
die( 'Vorname fehlt.' );
}
"Entschärfen" von Parametern
Vehindert das Einfügen von schadhaftem Code in die Persistenz-Schicht. Dieser würde bei GET Request wieder ausgelesen und eventuell ausgeführt: z.B. XSS, XSRF
<?php
.....
$_POST['firstname'] = htmlspecialchars( $_POST['firstname'] );
Die Code-Beispiele empfehlen sich nicht für die konkrete Umsetzung. Ich arbeite ausschließlich objektorientiert und hätte somit z.B. eine Request-Klasse, die das sanitizen von Inhalten kapseln würde. Auch für die Validierung von Inhalten bietet sich eine Validation-Klasse an.
|