Mysql
 sql >> Database >  >> RDS >> Mysql

Come posso proteggermi dagli attacchi SQL injection utilizzando il DBI di Perl?

Il modo corretto per disinfettare i dati da inserire nel database è utilizzare segnaposto per tutte le variabili da inserire nelle stringhe SQL. In altre parole, NON farlo MAI:

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

Invece, usa ? segnaposto:

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

E poi passa le variabili da sostituire quando esegui la query:

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

È possibile combinare queste operazioni con alcuni dei metodi pratici DBI; quanto sopra si può anche scrivere:

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

Consulta i documenti DBI per ulteriori informazioni.