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

Filtraggio di query MySQL in PHP

L'unico modo è sfuggire correttamente ai dati inviati dall'utente. Altri hanno indicato alcuni modi per farlo.

C'è un altro modo:dichiarazioni preparate e segnaposto. Le dichiarazioni preparate sono supportate da ogni moderno Interfaccia del database PHP, incluso mysqli e DOP .

Usiamo PDO come dimostrazione. Supponiamo di voler aggiornare un po' di dati nella tabella foo inviato da un utente.

$sql = 'UPDATE foo SET bar = ? WHERE user_id = ?';
$sh = $db->prepare($sql);
$sh->execute(array( $_POST['bar'], $_SESSION['user_id'] ));

Le variabili nell'array sono passate a execute sostituire i segnaposto punto interrogativo nella query. Quando ciò accade, vengono automaticamente sottoposti a escape e citati . Non è necessario eseguire l'escape manuale per renderli sicuri da inserire nel database!

D'altra parte, dovrai comunque filtrarli per contenuti imprevisti, come HTML, Javascript, lettere in cui ti aspetti numeri, ecc. Rendere i dati sicuri da inserire nel database è solo metà della battaglia .