sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo puedo protegerme contra los ataques de inyección SQL usando DBI de Perl?

La forma correcta de limpiar los datos para insertarlos en su base de datos es usar marcadores de posición para que todas las variables se inserten en sus cadenas SQL. En otras palabras, NUNCA hagas esto:

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

En su lugar, utilice ? marcadores de posición:

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

Y luego pase las variables a ser reemplazadas cuando ejecute la consulta:

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

Puede combinar estas operaciones con algunos de los métodos de conveniencia de DBI; lo anterior también se puede escribir:

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

Consulte los documentos de DBI para más información.