Como é de comum a todos, ou deveria ser, os maiores ataques dos hackers aos sites são através de SQL Injection, venho por meio desse post ensinar a se defender desses ataques.
Se engana quem pense que os ataques são sempre feitos em formulários, os ataques mais fortes são feitos pela url, a famosa querystring.
Ex: www.dominio.com.br/index.asp?id=4
Isso é um perigo se estiver sem proteção, e a maioria dos sites hoje em dia estão desprotegidos a esse tipo de ataque, parece mentira, mas com esse ataque é possível dar updates e drops no banco, criar procedures e até mesmo copiar arquivos executaveis para dentro do servidor e executá-los! Mas é claro que não vou ensinar a fazer isso aqui, hehehe, esse artigo é para a proteção.
Uma das melhores proteções, é criar usuários diferentes no banco, um usuário para selects e outro para update/drop/delete, e usar nas páginas de consulta o usuario de select.
Mas vou mostrar também uma função bem útil quem ajuda muito a pegar os espertinhos, segue ela abaixo:
Sub Valida_Request()
Set objRegExpr = New RegExp
objRegExpr.Global = True
objRegExpr.IgnoreCase = True
objRegExpr.Pattern = """|'|;| delete |drop|insert|select|update|upload"
For Each obj In Request.Form
If objRegExpr.Test(Request.Form(obj)) Then
Response.Write "A palavra ou caractere "& Request.Form(obj) &" é invalido para o Campo " & obj & " favor substituí-lo ou retirá-lo."
Response.End
End If
Next
For Each obj In Request.QueryString
If objRegExpr.Test(Request.QueryString(obj)) Then
Response.Write "A palavra ou caractere "& Request.Form(obj) &" é invalido para o Campo " & obj & " favor substituí-lo ou retirá-lo."
Response.End
End If
Next
Set objRegExpr = Nothing
End Sub
Essa função deve ser chamada no topo de todas as paginas, ela evita que a comandos como delete|drop|insert|select|update|upload e caracteres como "|'|; sejam inseridos nos formularios e querystrings, esses são os principais comandos e caracteres usados pelos hackers para esse tipo de ataque.
Espero que tenham gostado da dica.
Abs a todos!