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í.