Ir para conteúdo
Fórum Script Brasil
  • 0

SQL Injection, fazendo função ant-hacker


hicarocastro

Pergunta

Olá pessoal,

Essa onde de SQL injection está queimando os nossos miolos, desenvolvi uma função PARA SER INSERIDA EM TODAS AS PÁGINAS, ou melho, na página de acesso via include.

A função funciona para formulários e quesrystring, testei aqui e ta rodando bem, me ajudem a completar esta função, vamos nos unir e criar uma proteção pois trabalho é coisa séria.

'############################################ FUNÇÃO ANT SQL INJECTION E CROSS SCRIPTING

'via formulários #######################################################

hack = Array("'or'", "'OR'", ") or (", ") OR (", "' or '", "xp_", "delet", "DELET" ,"select", "having", "union", "' OR '", "<", ">", "(", ")", "#", "&", "--", "or 1", "OR 1", "ftp", "FTP", "drop", "DROP", "SQL", "sql", "insert", "INSERT" )

msghack= "Olá "& Request.ServerVariables("REMOTE_ADDR")&", detectamos o uso de código hacker ("& hack(intVer) &") em sua ação, estamos monitorando seu acesso!"

For each campo in request.form

for intVer = LBound(hack) to UBound(hack)

if InStr(request.form(campo),hack(intVer)) > 0 then

response.write(msghack)

response.end

end if

next

next

'via querystring #######################################################

For each campo in request.querystring

for intVer = LBound(hack) to UBound(hack)

if InStr(request.querystring(campo),hack(intVer)) > 0 then

response.write(msghack)

response.end

end if

next

next

'############################################ FUNÇÃO ANT SQL INJECTION

Editado por hicarocastro
Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0
hicarocastro,

A iniciativa é interessante, mas é mais simples evitar ataques através da parametrização dos campos, que impede qualquer tentativa de alterar o conteúdo de uma instrução SQL.

[]'s a todos!

É usso ai sabino!

SQL injection não é "rombo" do SQL Server e sim negligência do implementador.

Acoh que a parametrização uma boa.

Link para o comentário
Compartilhar em outros sites

  • 0
hicarocastro,

A iniciativa é interessante, mas é mais simples evitar ataques através da parametrização dos campos, que impede qualquer tentativa de alterar o conteúdo de uma instrução SQL.

[]'s a todos!

Acho que não é só uma questão de campos, se teu site usa querystring o cara pode inserir invadir na barrra de título de teu site, cada caso é um caso, em sistemas grandes apenas campos não resolve

Link para o comentário
Compartilhar em outros sites

  • 0

Amigos uso uma função bem simples para isto e padronizo em todo o site

Function vRequest(campo)
    campo = request(campo)
    vRequest = Replace(campo,"'","")
End Function

Desta forma ao invéz de usar request tanto para form quanto para string, você usa o vRequest("campo")

Isto que você está fazendo é legal se sua intenção é monitorar as tentativas mas também o ideal era gravar em um banco.

Link para o comentário
Compartilhar em outros sites

  • 0

Pessoal, apenas para esclarecer...

A parametrização é um meio seguro que IMPEDE tentativas de adulteração da query, exemplo...

Na consulta simples abaixo que pode ser usada para verificar a existência de um login de usuário...

strSQL = " SELECT CodUsuario FROM Usuarios WHERE Login = '" & strLogin & "'"
Pode ser inserido o SQL Injection através de valores maliciosos, mas inserindo parâmetros isso não será tão fácil. Seria algo parecido com o trecho abaixo...
...
strSQL = " SELECT CodUsuario FROM Usuarios WHERE Login = @Login "
Call objCommand.Parameters.Append("@Login", 200, 1, Len(strLogin), strLogin)
...

Nesse caso, não importa o que seja passado em "strLogin", porque o valor não vai alterar o corpo da query.

Quando à substituição de aspa simples, é um bom método e impede também os ataques que eu já vi ou ouvi falar, mas limita a inserção de dados com aspa simples no banco. Ao invés de eliminar a aspa simples, a sugestão é o mesmo replace mas trocando aspa simples por duas aspas simples. Também funciona e o caractere será inserido normalmente.

Outra vantagem do uso de parâmetros é que não é necessário padronizar o site inteiro, apenas vamos nos preocupar em criar os parâmetros da query na camada de acesso a dados, o tratamento fica centralizado, não importando o tamanho do site. Isso é particularmente útil quando estamos trabalhando em equipe.

[]'s a todos!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...