sql >> Database teknologi >  >> RDS >> Mysql

Hvordan kan jeg beskytte mig mod SQL-injektionsangreb ved hjælp af Perls DBI?

Den korrekte måde at rense data til indsættelse i din database på er at bruge pladsholdere for alle variabler, der skal indsættes i dine SQL-strenge. Med andre ord, gør ALDRIG dette:

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

Brug i stedet ? pladsholdere:

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

Og send derefter de variable, der skal erstattes, når du udfører forespørgslen:

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

Du kan kombinere disse operationer med nogle af DBIs bekvemmelighedsmetoder; ovenstående kan også skrives:

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

Se DBI-dokumenterne for mere information.



  1. MySQL-dato eller PHP-tid?

  2. Tekstkomprimering i PostgreSQL

  3. Sløjfe over resultatsæt i MySQL

  4. Sådan forbinder du fra Windows-kommandoprompten til mysql-kommandolinjen