Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]12238[/thread]

XSS und SQL-Injektion verhindern

Leser: 1


<< |< 1 2 >| >> 19 Einträge, 2 Seiten
Gast Gast
 2008-07-24 13:01
#112568 #112568
Hallo,

gibt es fertige Funktionen mit den man Variablen die vom Client an den Server geschickt werden validieren kann, um XSS oder SQL-Injektionen zu verhindern?

MfG und danke für die Antworten
pq
 2008-07-24 13:06
#112571 #112571
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
sql-injections: platzhalter verwenden.
Wiki:DbiPlatzhalter

XSS: ein template-system verwenden, das automatisch alle variablen per default html-escaped,
z.b. CPAN:HTML::Template oder CPAN:HTML::Template::Compiled mit der
option default_escape (leider ist mir ausser den beiden kein modul bekannt, dass so etwas bietet.)
ich fahre damit seit einer ganzen weile gut und muss mir (fast) keine gedanken mehr machen
beim template-schreiben.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
moritz
 2008-07-24 13:23
#112575 #112575
User since
2007-05-11
923 Artikel
HausmeisterIn
[Homepage]
user image
Der Antwort von pq ist kaum noch was hinzuzufügen, ausser "hör auf ihren Rat". Ich hab mal bei perlmonks nach default_escape für Template Toolkit gefragt und wurde fast ignoriert (so wenige Antworten auf nicht-triviale Fragen von mir hatte ich noch nie bekommen).

Während fast jeder ordentliche Perl-Hacker bei Datenbanken zu Placeholdern rät, ist das Bewußtsein für XSS leider noch nicht so verbreitet - vermutlich weil keine Datenbanken schaden nehmen, sondern nur der Besucher.
GwenDragon
 2008-07-24 13:37
#112576 #112576
User since
2005-01-17
14607 Artikel
Admin1
[Homepage]
user image
Wenn es darauf ankommt, Daten feiner zu filtern/zu prüfen (nichts gegen pqs Templatemodul, das ist wundervoll!), kann natürlich nicht die Hammermethode des HTML-Escaping greifen.

CPAN:Data::FormValidator ist nützlich.
Wenn nicht alles im HTML weggeworfen werden soll: CPAN:HTML::TagFilter
Ronnie
 2008-07-24 14:51
#112582 #112582
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
CGI.pm enthält ebenfalls eine Funktion EscapeHTML, die man nutzen kann gegen HTML/JS-Injection. DBI die bereits erwähnten Platzhalter.
LanX-
 2008-07-24 14:55
#112583 #112583
User since
2008-07-15
1000 Artikel
BenutzerIn

user image
Ronnie war etwas schneller... :)

CGI.pm macht auch in einigen Bereichen auto-escaping, allerdings leider nicht überall.
(nur form-generating functions)

Man würde auch keine Templates schreiben sondern sondern HTML-Funktionen aufrufen.

Grüße
Rolf
LanX-
 2008-07-24 15:39
#112596 #112596
User since
2008-07-15
1000 Artikel
BenutzerIn

user image
BTW: Ist der Taint-modus hier aus der Mode gekommen?
GwenDragon
 2008-07-24 15:42
#112598 #112598
User since
2005-01-17
14607 Artikel
Admin1
[Homepage]
user image
Nein, aus der Mode nicht. Wieso?

Taint schützt doch aber vor nichts. Es warnt nur bei der Verwendung von externen Daten.
Wer nicht weiß, was Taint macht, kann sich auch das Skript mit unsauberen Variablen "verschmutzen".
Gast Gast
 2008-07-24 16:22
#112605 #112605
Spricht etwas gegen den Einsatz von URI::Escape ?
pq
 2008-07-24 16:28
#112607 #112607
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
LanX-+2008-07-24 13:39:24--
BTW: Ist der Taint-modus hier aus der Mode gekommen?

schützt dich taint-mode vor sql-injections? dort verwende ich den taint-mode nicht, weil er auch
bei platzhaltern meckert. ebenso kann taint-mode gar nichts gegen xss ausrichten.
und genau diese beiden sachen waren doch gefragt.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
<< |< 1 2 >| >> 19 Einträge, 2 Seiten



View all threads created 2008-07-24 13:01.