Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Filtrando a consulta MySQL em PHP


A única maneira é escapar adequadamente dos dados enviados pelo usuário. Outros apontaram algumas maneiras de fazê-lo.

Há outra maneira:declarações preparadas e marcadores de lugar. As declarações preparadas são suportadas por todos os modernos Interface de banco de dados PHP, incluindo mysqli e PDO .

Vamos usar o PDO como demonstração. Digamos que queremos atualizar alguns dados na tabela foo enviado por um usuário.
$sql = 'UPDATE foo SET bar = ? WHERE user_id = ?';
$sh = $db->prepare($sql);
$sh->execute(array( $_POST['bar'], $_SESSION['user_id'] ));

As variáveis ​​no array passadas para execute substitua os marcadores de posição de ponto de interrogação na consulta. Quando isso acontece, eles são automaticamente escapados e citados . Você não precisa escapá-los manualmente para torná-los seguros para colocar no banco de dados!

Por outro lado, você ainda precisará filtrá-los para conteúdo inesperado, como HTML, Javascript, letras onde você espera números, etc. Tornar os dados seguros para inserir no banco de dados é apenas metade da batalha .