Abfragen einfügen
Chris
- perl
0 Cheatah
morgen zusammen,
aus sicherheitsaspekten würde ich gerne in das perl skrip noch folgendes einfügen:
1. eine sicherheit, dass user eine "gültige" emailadresse eingeben.
2. eine sicherheit, dass user keine daten eingeben können, welche mir schaden können (z.b. eingaben wie - []><, usw.).
mit welchen angaben kann ich dies bewerkstelligen bzw. wo sind diese angaben einzufügen?
bitte um hilfe.
gruss chris.
nachfolgend der code für das skript:
#!/usr/bin/perl
use CGI::Carp qw(fatalsToBrowser);
print "Content-type: text/html\n\n";
read(STDIN, $input, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $input);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$name =~ tr/+/ /;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$FORM{$name} = $value;
}
@vars = split(/&/, $ENV{QUERY_STRING});
foreach $var (@vars) {
($v,$i) = split(/=/, $var);
$v =~ tr/+/ /;
$v =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$i =~ tr/+/ /;
$i =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$i =~ s/<!--(.|\n)*-->//g;
$INFO{$v} = $i;
}
if($INFO{'action'} ne "") {
$action = $INFO{'action'};
}
else {
$action = $FORM{'action'};
}
if($FORM{'anrede'} eq "Herr") { $anrede = "Herr"; }
if($FORM{'anrede'} eq "Frau") { $anrede = "Frau"; }
if($FORM{'anrede'} eq "Firma") { $anrede = "Firma"; }
$name = $FORM{'name'};
$vorname = $FORM{'vorname'};
$strasse = $FORM{'strasse'};
$hausnummer = $FORM{'hausnummer'};
$plz = $FORM{'plz'};
$wohnort = $FORM{'wohnort'};
$nachricht = $FORM{'text'};
if($FORM{'1'} eq "on") { $interesse = "Erstberatung"; }
if($FORM{'2'} eq "on") { $interesse = "Konzeptentwicklung"; }
if($FORM{'3'} eq "on") { $interesse = "Angebot"; }
if($FORM{'4'} eq "on") { $interesse = "Bannergestaltung"; }
if($FORM{'5'} eq "on") { $bewertung = "Sehr gut"; }
if($FORM{'6'} eq "on") { $bewertung = "Gut"; }
if($FORM{'7'} eq "on") { $bewertung = "Befriedigend"; }
&send_mail;
sub send_mail {
$from = $FORM{'emailadresse'};
$email = "email1@web.de";
$subject = "Kontaktformular";
open(MAIL,"|/usr/sbin/sendmail -t") || die "Error! Can't open SendMail!"; # Entsprechend anpassen: "/usr/sbin/sendmail"
print MAIL "From:$from\n";
print MAIL "To:$email\n";
print MAIL "Subject:$subject\n\n";
print MAIL <<prmail;
Absender: $from
Eingegebene Daten:
Anrede: $anrede
Name: $name
Vorname: $vorname
Strasse: $strasse
Hausnummer: $hausnummer
PLZ: $plz
Wohnort: $wohnort
Nachricht:
-----------------------------------------------
$nachricht
-----------------------------------------------
Interesse: $interesse
Bewertung: $bewertung
prmail
close (MAIL);
&danke;
}
sub danke {
open(DATA, "../danke.html") || die "Fehlermeldung: $!"; # Pfad zu "danke.html"
foreach (<DATA>) {
$dank_seite .= $_;
}
close(DATA);
print $dank_seite;
exit;
}
Hi,
- eine sicherheit, dass user eine "gültige" emailadresse eingeben.
perldoc perlfaq9
"How do I check a valid mail address?
You can't, at least, not in real time. Bummer, eh? [...]"
(plus Hinweise auf mögliche Prüfungen)
- eine sicherheit, dass user keine daten eingeben können, welche mir schaden können (z.b. eingaben wie - []><, usw.).
Definiere nicht, was Dir schaden kann, sondern vielmehr, was Dir _nicht_ schaden kann. Prüfe im Script, ob etwas anderes vorliegt.
mit welchen angaben kann ich dies bewerkstelligen bzw. wo sind diese angaben einzufügen?
perldoc perlre
perldoc perlop (tr///)
sowie diverse Stringfunktionen.
#!/usr/bin/perl
#!/usr/bin/perl -w
use strict;
Anschließend korrigiere die Fehler, die Dir genannt werden. Siehe auch
perldoc -f my
print "Content-type: text/html\n\n";
perldoc CGI
Eingaben lesen
read(STDIN, $input, $ENV{'CONTENT_LENGTH'});
NEIN. perldoc CGI
$email = "email1@web.de";
Wenn Du Singlequotes dort verwendest, wo für Doublequotes keine Notwendigkeit besteht, sparst Du nicht nur Rechenzeit, sondern auch den Backslash vor dem '@'.
open(MAIL,"|/usr/sbin/sendmail -t") || die "Error! Can't open SendMail!"; # Entsprechend anpassen: "/usr/sbin/sendmail"
perldoc Net::SMTP, ggf. von http://www.cpan.org/ installieren (libnet-Bibliothek)
Cheatah