PHP

Como prevenir injeção de código no PHP? (SQL Injection)

8 de maio de 2020

Como prevenir injeção de código no PHP? (SQL Injection)

Neste artigo veremos maneiras de como prevenir injeção de código no PHP, utilizando estratégias para proteger o seu código e banco de dados.

como prevenir sql injection no php capa

Fala programador(a), tudo bem? Bora aprender mais sobre PHP e SQL Injection!

A primeira ação que você deve tomar é não utilizar a biblioteca mysql do PHP e suas funções

A biblioteca não é insegura, mas pode deixar lacunas em algumas situações que favoreçam a alguma injeção de código

Você então pode optar por mysqli ou PDO (minha indicação)

Na biblioteca PDO você consegue utilizar prepared statements, que é uma arma muito boa contra a SQL Injection

Que é basicamente isso aqui:

$sql = 'INSERT INTO tabela(nome, password, status) VALUES(?, ?, ?)';

Essas interrogações farão com que o dado passado seja processado para apenas executar texto na consulta SQL

Protegendo você de eventuais ataques

Os valores em interrogação, depois serão substituídos com o método bindValue

Desta forma:

$stmt->bindValue(1, 'nomeDoUsuário');

Estas duas etapas da query que ajudam a reduzir as vulnerabilidades

A query não é executada após a sua formação e sim após estes conjuntos de métodos

Validações

Além disso, outras boas práticas necessárias são validações tanto no front quanto no back-end

Primeiramente requerendo que o valor passado seja no formato que será inserido no banco de dados

Por exemplo: um nome, este valor não pode conter números, então faça estas validações

E também removendo caracteres especiais que não são necessários, pois são por eles que a maioria dos injections são originados

Inclusive espaços em branco!

Outras recomendações

Não aceite tipos de request diferentes do propósito da consulta, por exemplo, em uma inserção de dados verifique se o request é mesmo um POST e não um GET

Não exiba erros de SQL para o usuário, isso fará com que ele entenda como o banco se comporta e também descubra detalhes que poderão te prejudicar

Todos os erros do sistemas devem possuir um log para análise posterior, e então ser verificada alguma tentativa de invasão por Injection ou força bruta

Conclusão

Neste artigo vimos como prevenir injeção de código no PHP

O assunto é muito amplo, mas a maioria dos problemas se previne utilizando o prepared statements e principalmente validando todos os dados que são passados pelo usuário

As outras dicas também são importantes, como não mostrar erros de SQL, isso pode revelar a modelagem do banco e aí o hacker conseguir invadir de alguma outra forma

Confira também nosso catálogo de cursos gratuitos, com aulas semanais no YouTube

Subscribe
Notify of
guest
0 Comentários
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x