sql >> Databáze >  >> RDS >> Mysql

Jak se mohu chránit před útoky SQL injection pomocí Perl's DBI?

Správný způsob, jak dezinfikovat data pro vložení do databáze, je použít zástupné symboly pro všechny proměnné, které mají být vloženy do vašich SQL řetězců. Jinými slovy, NIKDY nedělejte toto:

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

Místo toho použijte ? zástupné symboly:

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

A pak předejte proměnné, které mají být nahrazeny při provádění dotazu:

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

Tyto operace můžete kombinovat s některými pohodlnými metodami DBI; výše uvedené lze také napsat:

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

Podívejte se na dokumenty DBI pro více informací.



  1. Uspořádaný počet po sobě jdoucích opakování / duplikátů

  2. nelze se připojit k dockeru mysql z místního

  3. Spojení výsledků ze dvou samostatných databází

  4. Existuje PL/SQL pragma podobné DETERMINISTIC, ale pro rozsah jediného SQL SELECT?