Moin!
Hallo zusammen!
Also... was der phpformgenerator erzeugt wissen sicherlich ein paar Leute weniger als es Leute gibt, die über die "sichere" Verarbeitung von Formulardaten Bescheid wissen.
Die zu stellenden Fragen sind:
Erfolgt die Überprüfung serverseitig (z.B. durch PHP) oder browserseitig(Javascript). Letzteres ist nur für eine Benutzerhilfe gut, der Sicherheit dient es keineswegs, weil immer noch gesendet werden kann, was im Gusto des vermeintlichen Benutzeres oder eben des Angreifers liegt.
Wie erfolgt die Weiterverarbeitung?
Die üblichen Tricks sind nur Beispiele und geben lange nicht den gesamten Komplex wieder, zeigen aber unten deutlich um was es geht. Die Funktionen kannst und solltest Du bei http://de.php.net/de/ nachlesen, aber zur Vorsicht immer die englische Ausgabe http://de.php.net/en/ vergleichen, oft ist die deutsche Übersetzung schlecht oder unvollständig.
Formulardaten, die nur ganze Zahlen enthalten dürfen:
<input id="intZahl" name="intZahl" type="text" />
<input id="decZahl" name="decZahl" type="text" />
<input id="strString" name="strString" type="text" />
PHP-Skript:
$strError='';
1. ganze Zahl:
if (isset($_GET['intZahl'])) {
$intZahl=(int)$_GET['intZahl'];
} else {
$strError.='Ganze Zahl nicht angegeben. ';
}
2. Dezimalzahl:
if (isset($_GET['decZahl'])) {
$intZahl=$_GET['decZahl']*1;
} else {
$strError.='Dezimalzahlzahl nicht angegeben. ';
}
3. Strings...
sind ein wenig zu kompliziert für eine Schnelldarstellung
http://www.php-resource.de/manual.php?p=ref.regex liefert Dir gute Anfangshinweise, die Funktionen kannst Du besser bei http://de.php.net/manual/de/ref.regex.php nachlesen.
Jedoch solltest Du grob so vorgegehen:
if (isset($_GET['strString'])) {
if (ini_get('magic_quotes_gpc')) {
$strString=stripslashes($_GET['strString']);
} else {
$strString=stripslashes($_GET['strString']);
}
#hier Feinprüfung mit regex,trimmen und so weiter
} else {
$strError.='Dezimalzahlzahl nicht angegeben. ';
}
if ($strError != '') {
# Formular mit Fehler neu senden
exit; #
}
weitere Verarbeitung
Beim Eintrag in Datenbanken:
$sql='SELECT spalte FROM table WHERE dies="'.mysql_real_escape_string($strString).'"';
#Beim Versenden von Mails:
$to = str_replace("\n",'',$to);
$from = str_replace("\n",'',$from);
$subject = str_replace("\n",'',$subject);
Beim Anzeigen in Gästebüchern:
$strString=strip_tags($strString);
Beim Schreiben in aufrufbare oder (zu) includierende Dateien:
$strString = str_replace("<?",'',$strString);
$strString = str_replace("?>",'',$strString);
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development