Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak mogę chronić się przed atakami typu SQL injection za pomocą DBI Perla?

Właściwym sposobem oczyszczenia danych do wstawienia do bazy danych jest użycie znaczników zastępczych aby wszystkie zmienne zostały wstawione do ciągów SQL. Innymi słowy, NIGDY tego nie rób:

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

Zamiast tego użyj ? symbole zastępcze:

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

A następnie przekaż zmienne, które mają zostać zastąpione podczas wykonywania zapytania:

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

Możesz połączyć te operacje z niektórymi wygodnymi metodami DBI; powyższe można również zapisać:

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

Zobacz dokumentację DBI aby uzyskać więcej informacji.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Drzewo MySQL uporządkowane według rodzica i dziecka

  2. Jaki jest najlepszy sposób na sprawdzenie, czy coś istnieje z PDO?

  3. Nie można przekazać parametru przez odwołanie w MySQLi

  4. mysqli_real_escape_string i problem z podwójnymi cudzysłowami

  5. Jak używać AJAX do przesyłania dużego pliku CSV?