Hell-O!
Ist es eigentlich sinnvoll, im Formmailer nicht nur die Werte sondern auch deren Namen auf spam-/hackerverdächtige Elemente zu prüfen?
Grundsätzlich und theoretisch wäre ein Angriff genauso wie über den Wert auch über den Namen möglich, wobei die Gefahr bei der GET-Methode größer ist, da es hier einfacher geht (einfach nur das Name/Wert-Paar anhängen). Ein sicheres Script fragt m.E. nur die Name/Wert-Paare ab, die es erwartet und ignoriert ungefragte Pärchen.
Oder kommen diese gar nicht an, wenn sie nicht der Namenskonvention entsprechen?
Der Typ CDATA ist da ziemlich umfassend: Erlaubt ist alles, was die Zeichenreferenz des Dokumentes hergibt.
foreach(@names) {
$name = $_;
mache doch gleich die Wertzuweisung im foreach:
foreach my $name (@names) { ... }
# $name prüfen <=========================================
Wenn du dir die übermittelten Namen via CGI::param holst, würde ich diese mit einer Liste von möglichen Namen (die man bspw. in einem Hash ablegen könnte) abgleichen:
use CGI;
my %formfields = ( foo => '',
bar => '',
baz => ''
);
foreach (CGI::param) {
if( exists $formfields{lc($_)} ) {
# Value prüfen
$formfields{$_} = CGI::param($_);
print $_, ' = ', $formfields{$_}, "\n";
}
else {
print 'Unbekannter Name: ', $_;
}
}
Im Ergebnis hast du alle zulässigen Name/Wert-Paare geprüft in deinem Hash %formfields stehen, den du dann weiter verwenden kannst. Aber vielleicht bin ich ja Morgens vor dem 5. Kaffee etwas neurotisch :-)
Siechfred
Hier könnte Ihre Werbung stehen.
Viel Lärm um nichts || Steuerliche Einordnung des Rangrücktritts