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

Uso de parâmetros para mysql_query


Primeiro, o que se trata é chamado de SQL-Injection . É basicamente apenas a possibilidade de alterar consultas no banco de dados por meio da entrada do usuário.

Vejamos um exemplo:

Inquerir:
SELECT temp1 FROM temp WHERE temp2 = 'VAR1';

Agora vamos atribuir a VAR1 o valor de:'; DROP TABLE *; -- E teremos:
SELECT temp1 FROM temp WHERE temp2 = ''; DROP TABLE *; --';

Com mysql_real_escape_string ficaria assim:
SELECT temp1 FROM temp WHERE temp2 = '\'; DROP TABLE *; --'

mysql_real_escape_string 'protege' uma string para uso em uma consulta.

Mas no final, você deve parar de usar o mysql_* completamente . Eles são obsoletos e considerados inseguros quando se trata de impedir a injeção de SQL ou outros meios de moderação com as consultas.

Você deve simplesmente parar de concatenar consultas assim e comece a usar declarações preparadas , que não apenas são mais fáceis de usar, evitam a injeção de SQL por padrão, mas também podem melhorar a velocidade do seu aplicativo.

Para PHP existem duas extensões que são projetadas para fechar todo o mysql_* aberto:

E repito:Por favor, pare de usar mysql_* !