Segurança para sites – Parte I

Quando se planeja o desenvolvimento de um site, uma preocupação que deve ser levado em conta é a segurança.

É comum vemos sites serem “hackeados” através de falhas no próprio site. Vamos escrever uma série de artigos falando das falhas mais comuns e do que podemos fazer para evitá-las.

No primeiro artigo iremos falar sobre um dos problemas mais comuns: SQL-INJECTION.

Funcionamento

Este ataque é feito inserindo dados através de formulário que, ao serem processados, interrompam a instrução sql original e executa outra, enviada pelo invasor. Geralmente é utilizado para conseguir logar na área administrativa de um determinado site sem que se tenha as credenciais necessárias.

Veja um exemplo de string que pode ser enviada através de formulários para tentar se autenticar:

Imagine um script asp autenticando um usuário da seguinte maneira:

Select * from ADM where login='” & request.form(“login”) & “‘”

Agora imagine que o invasor digite, no campo login do formulário o seguinte:

hi’ or ‘a’=’a

O resultado desta sql será:

Select * from ADM where login=’hi’ or ‘a’=’a

Isto irá retornar verdadeiro, e o usuário logará no sistema sem saber o login.

Como evitar

Você deve filtrar os campos que vem do formulário, removendo os caracteres que permitem ao invasor interromper o seu comando SQL e executar o dele.

Basta tratar os dados que vem do formulário, removendo os caracteres:

(;) , (') e (--).

Esta remoção pode ser realizada com função replace do asp, ou equivalente em outras linguagens. Em php você pode utilizar a função mysql_real_escape_string.

Uma observação que deve ser levado em conta é que todo e qualquer dado de formulário deve ser filtrado, não apenas os campos referente a login e senha. Inclusive dados vindo de checkbox e radio buttons, pois o invasor pode gerar outro html modificando estes campos e utilizando-os para a invasão.

Outra observação importante é filtrar estes dados sempre do lado do servidor. Mesmo que você valide os dados em javascript, nada impede do invasor desabilitar o javascript da máquina, e assim enviar os dados para o servidor. A validação do lado do servidor é necessária.

3 respostas para Segurança para sites – Parte I

  1. Olá, muito interessante esse post, gostaria de saber mais sobre segurança em aqruivos .JS

  2. Taylson Martinez disse:

    Olá, show otimo post🙂

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: