sql >> Databasteknik >  >> RDS >> Mysql

Hur kan jag skydda mig mot SQL-injektionsattacker med Perls DBI?

Det korrekta sättet att rensa data för att infogas i din databas är att använda platshållare för att alla variabler ska infogas i dina SQL-strängar. Med andra ord, gör ALDRIG detta:

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

Använd istället ? platshållare:

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

Och skicka sedan variablerna som ska ersättas när du kör frågan:

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

Du kan kombinera dessa operationer med några av DBIs bekvämlighetsmetoder; ovanstående kan också skrivas:

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

Se DBI-dokumenten för mer information.



  1. Hur man ansluter flera databaser i PHP, MYSQLi &PDO

  2. Hur man kontrollerar om en användare klickade på [Avbryt] på en InputBox i VBA

  3. Relation existerar inte

  4. Hur upprätthåller PostgreSQL den UNIKA begränsningen / vilken typ av index använder den?