PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Co dokładnie robi pg_escape_string?

Rozważ następujący kod:

$sql = "INSERT INTO airports (name) VALUES ('$name')";

Załóżmy teraz, że $name to "Chicago O'Hare" . Kiedy wykonasz interpolację ciągów, otrzymasz następujący kod SQL:

INSERT INTO airports (name) VALUES ('Chicago O'Hare')

co jest źle sformułowane, ponieważ apostrof jest interpretowany jako znak cudzysłowu SQL , a zapytanie będzie błędne.

Mogą się też zdarzyć gorsze rzeczy. W rzeczywistości wstrzyknięcie SQL znalazło się na pierwszym miejscu wśród najbardziej niebezpiecznych błędów oprogramowania w 2011 roku według MITRE.

Ale i tak nigdy nie powinieneś tworzyć zapytań SQL przy użyciu interpolacji ciągów. Zamiast tego użyj zapytań z parametrami.

$sql = 'INSERT INTO airports (name) VALUES ($1)';
$result = pg_query_params($db, $sql, array("Chicago O'Hare"));


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Najlepsze narzędzia GUI dla PostgreSQL

  2. Zainstaluj Postgres.app na komputerze Mac

  3. Indeksowanie i:Indeksy GIN

  4. Tworzenie konfiguracji replikacji PostgreSQL na Debianie / Ubuntu

  5. Używanie złączeń do łączenia danych z różnych tabel w PostgreSQL