Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como posso me proteger contra ataques de injeção de SQL usando o DBI do Perl?


A maneira correta de limpar os dados para inserção em seu banco de dados é usar espaços reservados para que todas as variáveis ​​sejam inseridas em suas strings SQL. Em outras palavras, NUNCA faça isso:
my $sql = "INSERT INTO foo (bar, baz) VALUES ( $bar, $baz )";

Em vez disso, use ? marcadores de posição:
my $sql = "INSERT INTO foo (bar, baz) VALUES ( ?, ? )";

E então passe as variáveis ​​a serem substituídas quando você executar a consulta:
my $sth = $dbh->prepare( $sql );
$sth->execute( $bar, $baz );

Você pode combinar essas operações com alguns dos métodos de conveniência do DBI; acima também pode ser escrito:
$dbh->do( $sql, undef, $bar, $baz );

Consulte os documentos DBI Para maiores informações.