Robert B.: Wie prüft man ein Checkbox-Feld serverseitig effizient?

Beitrag lesen

Moin Claus,

für eine Auswahlliste möchte ich auf Checkboxen zurückgreifen, dabei stellt sich mir ausgehend von einem Zitat bei php.de

Achtung! Häufig gemachter Fehler:
Für Auswahlfelder und -listen werden die Gefahren von XSS oftmals unterschätzt, weil sie im Gegensatz zu Textfeldern keine direkte Eingabe von Schadcode ermöglichen. In Anbetracht der Tatsache, dass in einem gefälschten Formular allein die richtige Angabe des name-Attributs ausreicht, um beliebige Werte und Werttypen für beliebige Elemente übermitteln zu können, ist die Annahme jedoch haltlos und damit besonders gefährlich.

die Frage, wie man das sinnvollerweise anstellt.

Du musst prüfen, ob der vom Auswahlfeld übermittelte Wert dem entspricht, was du erwartest – stell dir dabei vor, dass jemand das Auswahlfeld oder die Auswahlliste durch eine textarea ersetzt hätte.

Bisher habe ich, von einem Checkbox-Feld ausgehend, folgendes:

	if(isset($_POST['MailRecip'])) {
		foreach ($_POST['MailRecip'] as $name) {
		  //if(preg_match('/^[a-zA-ZäöüÄÖÜß\-]{3,40}$/', $name)==false) exit(header('Location: ...'));
			if (array_key_exists($name, array_Recip)==false) exit(header('Location: ...'));
		}
}

Was ist denn array_Recip für eine Konstante?

Was aber, wenn andere gleichbenannte Formularelemente kommen, wie ließe sich das umfassend lösen?

Du erwartest, dass MailRecip ein Array enthält. Was passiert denn im foreach, wenn das nicht der Fall ist?

Viele Grüße
Robert