Há Vulnerabilidade?
Pessoal,
Estou fazendo um site que possui "milhões" de formulários e páginas, e só de pensar em alterar página por página, textbox por textbox para protegê-lo contra SQL Injection já dava vontade de chorar. http://forum.imasters.com.br/public/style_emoticons/default/natal_biggrin.gif
Pensando nisso andei dando uma pesquisada por aí e tentei criar um include que protegesse todas as páginas do meu site contra SQL Injection.
Acho que cheguei a algum lugar.
Desenvolvi o seguinte código:
<%
'Tendo como expressões proibidas: select drop insert delete update where xp_ -- ' `;
'Defino as configurações regionais para Brasil
session.LCID = 1046
'Crio a Função
Function FuncProtect(sInput)
Dim VetBad, i
BooIlegal=False
'Defino todas as expressões proibidas
VetBad=array("select", "drop", "insert", "delete", "update", "where", "xp_", "--", CHR(39), CHR(96), CHR(59))
For i = 0 to uBound(VetBad)
If Instr(lcase(sInput),VetBad(i))>0 Then
FuncProtect=True
End If
NextEnd function
'Finalizo a Função
'Pego todas as possíveis querystring's da página
URLSor = request.ServerVariables("QUERY_STRING")
'Pego as expressões que são substituidas por outras e substituo elas por delete para que sejam identificadas
URLS = URLSor
URLS = CStr(Replace(URLS,"%60","delete"))
'Pego todos os possíveis formulários da página
FORMULARIOSor = Request.Form
'Pego as expressões que são substituidas por outras e substituo elas por delete para que sejam identificadas
FORMULARIOS = FORMULARIOSor
FORMULARIOS = CStr(Replace(FORMULARIOS,"%27","delete"))
FORMULARIOS = CStr(Replace(FORMULARIOS,"%60","delete"))
FORMULARIOS = CStr(Replace(FORMULARIOS,"%3B","delete"))
'Verifico se há algo proibido nas variáveis
If FuncProtect(URLS)=True OR FuncProtect(FORMULARIOS)=True Then
'Defino para qual página o usuário será redirecionado caso seja encontrado algo de errado nas variáveis
Response.Redirect("../protect/index.asp")
'Caso esteja tudo certo, o usuário continua navegando normalmente.
End If
%>
Achei mais conveniente redirecionar para uma página do que substituir por outros caracteres para evitar causar algum erro na página.
Aí coloco um include no topo de todas as páginas e teoricamente pronto. http://forum.imasters.com.br/public/style_emoticons/default/clap.gif
Até onde testei funcionou perfeitamente.
Alguém vê alguma possível falha?
Discussão (15)
Carregando comentários...