Hallo zusammen,
ich habe mir mal eine kleine Funktion erstellt zur Überprüfung von Formularfeldern. Ich würde gerne mal einige Meinungen von euch hören, was ihr davon haltet. Insbesondere interessiert mich natürlich ob der Faktor Sicherheit für Scripte und Server gut gewährleistet ist oder ehr nicht.
mfg Melchor
ich habe mir mal eine kleine Funktion erstellt zur Überprüfung von Formularfeldern. Ich würde gerne mal einige Meinungen von euch hören, was ihr davon haltet. Insbesondere interessiert mich natürlich ob der Faktor Sicherheit für Scripte und Server gut gewährleistet ist oder ehr nicht.
PHP-Code:
// Formular-Daten-Prüfung mit regulären Ausdrücken
function check ( $Typ, $Name, $Wert ){
global $hack;
global $check;
//Spezielle Typen-Prüfung
if( $Typ == 0 || $Typ == 2 || $Typ == 3 || $Typ == 4 ){
// Prüfung ob Pflichtfelder nicht leer sind
if( $Wert == "" ){
$hack = true;
$check[] = "Das Eingabefeld $Name ist eine Pflichtangabe.\n";}}
if( $Typ == 1 ){
// Drop-Down-Auswahl-Prüfung
if( $Wert == 0 || $Wert != 'on' ){
$hack = true;
$check[] = "Das Eingabefeld $Name ist eine Pflichtangabe.\n";}}
if( $Typ == 2 && $Wert != "" ){
// Datums-Prüfung
if( !preg_match("'\b(((0?[1-9]|[12][0-9])\.(0?[1-9]|1[0-2])\.)|(30\.((0?
[13-9])|(1[0-2]))\.)|(31\.(0?[13578]|1[02])\.))(\d{2}|
(19|20)\d{2})\b'", $Wert) ){
$hack = true;
$check[] = "Das Eingabefeld $Name muss eine Datumsangabe in dem
Format DD.MM.YYYY sein.\n";}}
if( $Typ == 3 && $Wert != "" ){
// Nr.-Prüfung bei ICQ und MSN
if( !preg_match("'((\d{3}-){2}(\d{3}))|((\d{3}){3})'", $Wert) ){
$hack = true;
$check[] = "Das Eingabefeld $Name darf nur aus Ziffern in dem
Format xxx-xxx-xxx oder xxxxxxxxx bestehen.\n";}}
if( $Typ == 4 && $Wert != "" ){
// E-Mail-Prüfung auf Gültigkeit
if( !preg_match("'(.*?)\.(.*)@(.+)\.(.*)|(.*?)@(.+)\.(.*)'", $Wert) ){
$hack = true; $check[] = "Das Eingabefeld $Name ist ungültig.\n";}}
// Allgemeine Prüfungen
if( $Typ != 2 && $Wert != "" ){
if( preg_match("'(([F|f][O|o][R|r][M|m][A|a][T|t]\s*:\s*[a-zA-Z]{1})|
([U|u][P|p][D|d][A|a][T|t][E|e])|([D|d][E|e][L|l][E|e][T|t][E|e])|
([S|s][A|a][V|v][E|e])|([L|l][O|o][A|a][D|d])|
([M|m][Y|y][S|s][Q|q])|([F|f]|[L|l][O|o][P|p][E|e][N|n])
|\/|\||\{|\}|\[|\]|<|>|:|';')'", $Wert)){
$hack = true;
$check[] = "Das Eingabefeld $Name darf keine Systembefehle, sowie
diverse Sonderzeichen ('/, |, {, }, [, ], <, >, $, : und ;')
enthalten.\n";}}}
Kommentar