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

Jak korzystać z białych list i przygotowanych wyciągów z Postgresql w php?

Biała lista

Twój kod w obecnej formie jest bardzo niebezpieczny, nie tylko pozwalasz użytkownikowi zdecydować, które pola powinny zostać wybrane, ale także pozwalasz mu zdecydować, do jakich tabel ma wykonać zapytanie. Zdecydowanie powinieneś przeprowadzić w nich kontrolę białej listy. np.:

if($_POST['tableSelected'] == 'acceptable_table1' || $_POST['tableSelected'] == 'acceptable_table2) {
    $table = $_POST['tableSelected']
}

Podobnie powinieneś sprawdzić poprawność list pól. Ale walidacja listy pól będzie dość skomplikowana, ponieważ twoje pola będą zależne od tabeli. Proponuję tworzyć tablice i sprawdzać, czy jest w nich zaznaczenie.

$table1_fields = array('col1','col2',...)
$table2_fields = array('col1','col2',...)

Przygotowane zestawienia

Jak wiesz, przygotowane instrukcje mogą być używane tylko do wiązania parametrów. Nie można ich używać do wypełniania nazw tabel i nazw kolumn. Dlatego potrzebujesz zarówno przygotowanych zestawień, jak i białej listy. Polecam używanie PDO . Może to wyglądać jak

$stmt = $dbh->prepare("SELECT {$fieldlist} FROM {$table} where field = ?");
$stmt->execute(array('somevalue'));



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. klonowanie danych hierarchicznych

  2. ZAMÓWIENIE PRZEZ Alias ​​nie działa

  3. Sumuj do osiągnięcia wartości progowej, a następnie zresetuj licznik

  4. INITCAP() – Konwertuj na litery początkowe w PostgreSQL

  5. Jak mam używać obrazu/kontenera Postgresql?