Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment puis-je me protéger contre les attaques par injection SQL à l'aide de DBI de Perl ?

La bonne façon de nettoyer les données à insérer dans votre base de données consiste à utiliser des espaces réservés pour toutes les variables à insérer dans vos chaînes SQL. En d'autres termes, ne faites JAMAIS ceci :

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

À la place, utilisez ? espaces réservés :

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

Et passez ensuite les variables à remplacer lors de l'exécution de la requête :

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

Vous pouvez combiner ces opérations avec certaines des méthodes pratiques de DBI; ce qui précède peut aussi s'écrire :

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

Voir la documentation DBI pour plus d'informations.