Pergunta

Alguém pode me explicar em inglês simples o que são consultas parametrizadas e como implementá-las em PHP para um banco de dados MySQL para evitar injeção de SQL?

Foi útil?

Solução

A seção instruções preparadas e procedimentos armazenados do PHP manual, embora se refira especificamente ao PDO, cobre isso bem quando diz:

Eles podem ser considerados uma espécie de modelo compilado para o SQL que um aplicativo deseja executar, isso pode ser personalizado usando parâmetros variáveis. As declarações preparadas oferecem duas grandes benefícios:

  • A consulta só precisa ser analisada (ou preparado) uma vez, mas pode ser executado várias vezes com o mesmo ou parâmetros diferentes. Quando a consulta está preparado, o banco de dados irá analisar, compilar e otimizar é plano para executar a consulta. Pra consultas complexas que este processo pode realizar tempo suficiente para que seja perceptível desacelerar um aplicativo se houver um precisa repetir a mesma consulta por muitos vezes com parâmetros diferentes. De usando uma declaração preparada, o aplicativo evita repetir o analisar / compilar / otimizar o ciclo. Esta significa que as declarações preparadas usam menos recursos e, portanto, mais rápido.

  • Os parâmetros para declarações preparadas não precisa ser citado; o motorista lida com isso automaticamente. Se um aplicativo usa exclusivamente preparado declarações, o desenvolvedor pode ter certeza que nenhuma injeção de SQL ocorrerá (no entanto, se outras partes do consulta está sendo construída com entrada sem escape, injeção de SQL é ainda possível).

Se você procura um exemplo específico de como usá-los, a página vinculada acima também inclui exemplos de código.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top