sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Cómo usar listas blancas y declaraciones preparadas con Postgresql en php?

Lista blanca

Su código en su forma actual es muy peligroso, no solo le permite al usuario decidir qué campos deben seleccionarse, sino que también le permite decidir en qué tablas consultar. Definitivamente debe realizar una verificación de la lista blanca en estos. por ejemplo:

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

Del mismo modo, debe validar las listas de campos. Pero la validación de la lista de campos será bastante complicada porque sus campos dependerán de la tabla. Sugiero crear matrices y verificar que la selección esté en ellas.

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

Declaraciones preparadas

Como sabe, las declaraciones preparadas solo se pueden usar para vincular parámetros. No se pueden usar para completar nombres de tablas y nombres de columnas. Es por eso que necesita declaraciones preparadas y listas blancas. Recomiendo usar PDO . Podría parecerse a

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