Leser: 23
1 2 3 4 5 6
my $animal = $dbh->quote($animal); my $sorte = $dbh->quote($sorte); my $sth = $dbh->prepare("INSERT INTO tbl_bsp SET bsp_artID=$sorte, bsp_text=$animal") || die "Konnte Statement nicht erstellen : $DBI::errstr<br>"; $sth->execute() || die "Konnte Statement nicht ausführen $DBI::errstr<br>"; $sth->finish;
1 2 3 4 5
my $sth = $dbh->prepare("INSERT INTO tbl_bsp SET bsp_artID=?, bsp_text=?") or die "Konnte Statement nicht erstellen : $DBI::errstr"; $sth->execute($sorte, $animal) or die "Konnte Statement nicht ausführen $DBI::errstr"; $sth->finish;
<a href="$user_homepage">
2009-04-01T16:53:21 pqdein beispiel mal umgeschrieben mit platzhaltern, die sind IMHO auch einfach weniger schreibarbeit und line noise:
Code (perl): (dl )1 2 3 4 5my $sth = $dbh->prepare("INSERT INTO tbl_bsp SET bsp_artID=?, bsp_text=?") or die "Konnte Statement nicht erstellen : $DBI::errstr"; $sth->execute($sorte, $animal) or die "Konnte Statement nicht ausführen $DBI::errstr"; $sth->finish;
1 2 3
my $sth = $dbh->prepare("INSERT INTO tbl_bsp SET bsp_artID=?, bsp_text=?"); $sth->execute($sorte, $animal); $sth->finish;
2009-04-01T16:53:21 pqUnd onabcdef=, also Eventhandler, darf auch nicht dastehen![…] und ist dann vor so ziemlich allen XSS geschützt, fehlt dann nur noch das filtern bei sowas wieCode: (dl )<a href="$user_homepage">
wo dann kein "javascript:..." drinstehen darf.
2009-04-10T07:02:00 GwenDragonWobei es auf die Browser ankommt wie XSS eingefügt wird.
Manche Browser halten sich nämlich nicht daran, was da steht, werfen es nicht weg, sondern reparieren den Code so, dass er trotzdem als Javascript wird.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
#!/usr/bin/perl use strict; use DBI; use CGI; use CGI qw(:standard); use CGI::Carp qw(fatalsToBrowser); my $dbh = DBI->connect('dbi:mysql:dbi_demo','root','r00t') || die "Keine MySql verbindung : $DBI::errstr<br>"; my $sorte = CGI::param('sorte'); my $animal = CGI::param('animal'); print "Content-type: text/html\n\n"; #my $animal = $dbh->quote($animal); #my $sorte = $dbh->quote($sorte); my $sth = $dbh->prepare("INSERT INTO tbl_bsp SET bsp_artID=?, bsp_text=?") || die "Konnte Statement nicht erstellen : $DBI::errstr<br>"; $sth->execute($sorte,$animal) || die "Konnte Statement nicht ausführen $DBI::errstr<br>"; $sth->finish; my $sth = $dbh->prepare( 'SELECT * FROM tbl_bsp' ) || die "Kann Statement nicht vorbereiten: $DBI::errstr\n"; $sth->execute() || die "Error $DBI::errstr<br>"; while ( my @ergebnis = $sth->fetchrow_array() ){ print "$ergebnis[0] $ergebnis[1] $ergebnis[2]<br>"; } $sth->finish; $dbh->disconnect;
Guest Monk[...]
Wie muss ich nun beim einfügen quoten, und wie beim wiederauslesen ?
Gibt es noch eine andere möglichkeit beim auslesen die zeichen zu escapen ?
zb mittels suchen/ersetzen ?
[...]
print header('text/html');
1 2 3 4 5
print start_html('Datenbanktest'), start_table; while (my @ergebnis = $sth->fetchrow_array()) { print Tr(map td(escapeHTML($_)), @ergebnis); } print end_table, end_html;