TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

ATPS DESENVOLVIMENTO DE SOFTWARE SEGURO ETAPAS 3,4e5

Ensaios: ATPS DESENVOLVIMENTO DE SOFTWARE SEGURO ETAPAS 3,4e5. Pesquise 860.000+ trabalhos acadêmicos

Por:   •  4/6/2014  •  2.496 Palavras (10 Páginas)  •  534 Visualizações

Página 1 de 10

Relatório 4 - Evitando Ataques SQL INJECTION

A SQL - Structured Query Language - é largamente usada para interagir com banco de dados relacionais. Se você considerar que 90% das aplicações utilizam banco de dados com suporte a SQL vai concluir que o uso da SQL é quase uma unanimidade por ser prática , fácil e portátil.

Ao colocar sua aplicação na Web você a esta expondo a um acesso mais amplo e indiscriminado. Afinal qualquer um que tenha acesso a url do site terá acesso a sua aplicação e aos dados que ela disponibiliza. Pensando na segurança de suas informações as empresas investem pesado em firewalls , certificação digital e outros recursos , com o objetivo de se proteger de invasores.

Para que o controlar o acesso as informações normalmente restringe-se o acesso aos usuários cadastrados usando um nome e senha para identificação ; estes dados são colhidos através de um formulário de login e são então verificados com as informações armazenadas em um banco de dados dos usuários cadastrados; se estiverem corretas o acesso é permitido caso contrário o acesso é negado.

É assim que funciona o home banking na internet e uma infinidade de outras aplicações web na qual o acesso é restrito. Você pode ter o aparato mais moderno em termos de tecnologia de segurança protegendo o seu site de um ataque hacker e nem se dar conta de que a vulnerabilidade da sua aplicação esta ali naquele formulário de login. Ele pode ser a porta de entrada para ataques maliciosos através da injeção de SQL.

A injeção SQL ocorre quando um invasor consegue inserir comandos SQL na instrução SQL que você usa no seu script de modo a burlar a restrição e ter acesso ou danificar as informações armazenadas no seu banco de dados.

Como ocorre a injeção SQL

Se você acha que não deve levar a sério a injeção SQL veja esta notícia da INFO:

Abaixo temos um típico formulário de login :

form name="frmLogin" action="login.asp" method="post">

Nome : <input type="text" name="nomeUsuario">

Senha: <input type="text" name="senhaUsuario">

<input type="Enviar">

</form>

Geralmente quando o usuário clicar no botão - Enviar - o script login.asp será executado para efetuar a validação dos dados informados. Abaixo temos um script típico para um arquivo de validação de informações:

<%

dim nomeUsuario, senhaUsuario, consulta

dim conn, rS

nomeUsuario = Request.Form("nomeUsuario")

senhaUsuario = Request.Form("senhaUsuario")

set conn = server.createObject("ADODB.Connection")

set rs = server.createObject("ADODB.Recordset")

consulta = "select count(*) from usuarios where nomeUsuario='" & nomeUsuario & "' and senhaUsuario='" & senhaUsuario & "'"

conn.Open "Provider=SQLOLEDB; Data Source=(local);Initial Catalog=myDB; User Id=sa; senhaUsuario="

rs.activeConnection = conn

rs.open consulta

if not rs.eof then

response.write "Acesso Concedido"

else

response.write "Acesso Negado"

end if

%>

Vamos analisar o que ocorre quando um usuário tenta se autenticar. Vamos supor que ele é usuário cadastrado com nome monk e senha 123456 (só suposição). Ao informar o nome e a senha e clicar no botão enviar o script do arquivo login.asp será executado. Vamos ver como ficou a instrução SQL montada neste caso :

select count(*) from usuarios where nomeUsuario='monk' and senhaUsuario='123456'

Neste caso o usuário monk, senha 123456 será autenticado e terá acesso ao sistema.

Tubo bem ?

Não, se você usa este tipo de instrução SQL nada esta bem pois o texto final da consulta SQL depende inteiramente do conteúdo das variáveis , e , se o conteúdo destas variáveis não for validado e tratado o texto final concatenado poderá ser um SQL adulterado através de uma injeção SQL.

Quer ver ? Vou começar pegando leve. Vamos supor que um hacker decidiu invadir sua página. Uma das primeiras coisas que ele pode fazer é tentar uma injeção SQL , e, vai começar verificando se você esta tratando o apóstrofe (aspa simples: '). Se você não sabe a presença de um caractere de apóstrofe (') no conteúdo de uma variável concatenada no SQL é usada para delimitar strings de texto. Então suponha que ele digite os seguintes dados nos campos nome e senha:

nome = tes'te

senha =

Se você não tratar o apóstrofe vai ocorrer um erro de SQL (incorrect Sintax) ,e , vendo isto o hacker vai ficar mais animado...

Agora vou pegar pesado. Suponha então que a seguir ele digite os seguintes dados

nome = ‘ ; drop table users--

senha =

Este comando irá excluir a tabela users (se ela existir). E se você pensa que é muito difícil o hacker adivinhar o nome da sua tabela vou mostrar mais abaixo que ele pode fazer isto de uma maneira simples. Isto é possível pois o caractere (;) indica o fim de uma consulta e o começo de outra em T-SQL , e , o caractere (--) no final da linha faz com que o scrpt ASP seja executada sem erro.

Continuando o ataque , ele pode também informar o seguinte :

nome = admin

senha

...

Baixar como (para membros premium)  txt (15.2 Kb)  
Continuar por mais 9 páginas »
Disponível apenas no TrabalhosGratuitos.com