sql >> Database >  >> RDS >> Mysql

Hoe kan ik mij beschermen tegen SQL-injectie-aanvallen met Perl's DBI?

De juiste manier om gegevens op te schonen voor invoeging in uw database is door gebruik te maken van plaatsaanduidingen om alle variabelen in uw SQL-strings in te voegen. Met andere woorden, doe dit NOOIT:

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

Gebruik in plaats daarvan ? tijdelijke aanduidingen:

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

En geef vervolgens de variabelen door die moeten worden vervangen wanneer u de query uitvoert:

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

U kunt deze bewerkingen combineren met enkele van de DBI-gemaksmethoden; het bovenstaande kan ook worden geschreven:

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

Zie de DBI-documenten voor meer informatie.



  1. PostgreSQL 9.0 Back-up en herstel

  2. virtuele velden gebruiken om waarden op te tellen in cakephp

  3. WAMP-server. Zeer grote gegevensmap in MySQL?

  4. Kardinaliteitsschatting:dichtheidsstatistieken combineren