Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie kann ich mich mit Perls DBI vor SQL-Injection-Angriffen schützen?

Der richtige Weg, Daten zum Einfügen in Ihre Datenbank zu bereinigen, ist die Verwendung von Platzhaltern für alle Variablen, die in Ihre SQL-Strings eingefügt werden sollen. Mit anderen Worten, tun Sie dies NIEMALS:

my $sql = "INSERT INTO foo (bar, baz) VALUES ( $bar, $baz )";

Verwenden Sie stattdessen ? Platzhalter:

my $sql = "INSERT INTO foo (bar, baz) VALUES ( ?, ? )";

Und übergeben Sie dann die zu ersetzenden Variablen, wenn Sie die Abfrage ausführen:

my $sth = $dbh->prepare( $sql );
$sth->execute( $bar, $baz );

Sie können diese Operationen mit einigen der praktischen DBI-Methoden kombinieren; obiges kann auch geschrieben werden:

$dbh->do( $sql, undef, $bar, $baz );

Siehe DBI-Dokumentation für weitere Informationen.