Evitando Injeção SQL (parte 3)

A seguir algumas orientações de como você pode evitar um ataque de injeção SQL :

1- Estabeleça uma política de segurança rígida e criteriosa limitando o acesso dos seus usuários. Isto quer dizer que você deve dar somente os poderes necessários aos seus usuários. Não de acesso de escrita a tabelas e dê somente acesso as tabelas que o usuário vai precisar.

2- Faça a validação da entrada de dados no formulário e não permita os caracteres inválidos como : (‘) , (–) e (;) nem de palavras maliciosas como insert , drop , delete, xp_ . Abaixo algumas funções que você pode usar:

– Substituindo o apóstrofe(‘) pelo duplo apóstrofe (”)

<%
Function ExpurgaApostrofe(texto)
ExpurgaApostrofe = replace( texto , “‘” , “””)
End function
%>

– Substituindo os caracteres e palavras maliciosas por vazio(“”).

<%
Function LimpaLixo( input )

dim lixo
dim textoOK

lixo = array ( “select” , “drop” , “;” , “–” , “insert” , “delete” , “xp_”)

textoOK = input

for i = 0 to uBound(lixo)
textoOK = replace( textoOK , lixo(i) , “”)
next

LimpaLixo = textoOK

end Function
%>

– Rejeitando os dados maliciosos:

<%
Function ValidaDados( input )

lixo = array ( “select” , “insert” , “update” , “delete” , “drop” , “–” , “‘”)

ValidaDados = true

for i = lBound (lixo) to ubound(llixo)
if ( instr(1 , input , lixo(i) , vbtextcompare ) <> 0 ) then
ValidaDados = False
exit function}
end if
next
end function
%>

3- Limite a entrada de texto para o usuário no formulário de entrada de dados. Se o campo nome deve ter somente 10 caracteres restrinja a isto a entrada de dados no formulário. O mesmo vale para a senha.

4- Faça o tratamento adequado de erros não permitindo que mensagens de erros exponham informações sobre a estrutura dos seus dados.

5- Faça um log para auditoria dos erros ocorridos e das operações mais importantes da aplicação.

Segurança é coisa séria e vale a pena tomar todas as precauções a nosso alcance para preservar nossos dados e nossos empregos.

Fonte: www.macoratti.com.br

3 respostas para Evitando Injeção SQL (parte 3)

  1. tiago disse:

    eu ate coloquei so que da erro nas “” e no ‘
    e ai??

  2. Olá Tiago, em que ponto exatamente ocorreu o erro?

  3. Eu estava olhando seu post, e vi que você não pode/ precisa colocar palavras, imagina que a pessoa esteja querendo postar alguma coisa e precisa utilizar a palavra “select”, utilizando o seu sistema de proteção vai fazer com que ele dê um replace para nada e vai fazer o texto ficar sem sentido. Você pode utilizar replace para nada em string`s como ‘ ‘/ ; ou melhor você pode substituir para encode com a seguinte função Server.HtmlEncode. Boas festas abraços

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: