Ir ao conteúdo
  • Cadastre-se

Testando a Segurança de seu Site – Parte 3


     17.155 visualizações    Redes    0 comentários
Testando a Segurança de seu Site – Parte 3

Evitando Injeções SQL

A melhor prática para evitar injeções SQL é validar e limpar as variáveis obtidas através da URL do script.

Por exemplo, se o script espera que a variável seja sempre um número, nós podemos facilmente adicionar um comando para que sejam aceitas somente variáveis numéricas. Por exemplo, no PHP poderíamos fazer algo como:

if (isset($_GET['id'])) {

                $id=intval($_GET['id']);

                }

If (!$id) {

                header( "HTTP/1.0 404 Not Found" );

                exit();

                }

A função “intval” forçará a variável a ser numérica; assim, se o hacker digitar qualquer comando na tentativa de fazer uma injeção SQL, o comando simplesmente será ignorado e o script será terminado, dando uma mensagem de erro 404 (página não encontrada).

Se você espera que o conteúdo da variável seja alfanumérico, deverá colocar alguma forma de validação onde apenas os valores permitidos sejam aceitos. Um modo simples de fazer isso é com afirmações “if”, onde valores desconhecidos serão simplesmente ignorados e o código não rodará com valores desconhecidos.

Já para a situação login/senha descrita na página anterior, a ideia básica é “escapar” as aspas, portanto, caracteres como aspas simples e aspas duplas são precedidos por uma barra invertida, sendo assim ignorados (OR 1=1 será agora considerado como parte do login e da senha e não como uma cláusula separada). Em PHP, isso pode ser conseguido através de algo como:

if (isset($_POST['login'])) {

                $login=addslashes($_POST['login']);

                }

if (isset($POST['senha'])) {

                $password=addslashes($_POST['senha']);

                }

Outra prática importante para evitar injeções SQL é o uso de variáveis entre aspas nas queries. Por exemplo, em vez de:

SELECT titulo,conteudo FROM artigos WHERE id=$id;

Use:

SELECT titulo,conteudo FROM artigos WHERE id='$id';

Na verdade, se você não fizer isso, o hacker será capaz de ultrapassar o login e a senha através da adição de OR 1=1 no campo da senha, mesmo que você adicione o código para “escapar” aspas.

Existem vários outros modos de fazer uma injeção SQL e também muitas maneiras de evitá-las. No entanto, o objetivo desse tutorial era lhe familiarizar com o problema para ver se o seu site apresenta esse tipo de vulnerabilidade e não de ser um guia completo sobre o assunto.


Artigos similares


Comentários de usuários

Respostas recomendadas

Não há comentários para mostrar.



Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...