Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

wilnet

[Resolvido] Possível Ataque?

Recommended Posts

Olá pessoal todos bem?

 

Venho notado que diariamente esse comando em meu site.

/listar.asp?lista=categoria&cat_id=252

E esse código gera um ERRO, expondo parte de meu site como:

 

Microsoft OLE DB Provider for ODBC Drivers error '80040e14' 

[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'cat_id= AND cad_ok='S''. 

/listar.inc, line 34 

Desejo por favor, fazer um REDIRECIONAMENTO quando digitarem esse código ir para a "index.asp" assim não mostraria mais esse erro.

 

Preciso de algo que verifique desde "1 a 999" por exemplo:

 

/listar.asp?lista=categoria&cat_id=252
qualquer numero entre 1 a 999 dentro do cat_id= direcionar para a index.asp.

 

Obrigado por qualquer contribuição.

 

Grato,

 

William

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça um if else e coloque no inicio da pagina pegando essa querystring, tb faça uma verificação para saber se o valor passado na query é numerica para isso utilize a função isnumeric, assim ficara até mais protegido o seu sistema.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

este erro geralmente é erro na sua string SQL, Verifique a ortografia. pode ser um nome de coluna Invalido 'sua_coluna'. A coluna a qual você se refere na Base de Dados não foi encontrada. veja também se os dados estão com os tipos corretos no bd e na string SQL

dá um response.write na string SQL, para ver o k esta sendo passado

response.write(SQL)
response.end()

e poste a linha 34

Compartilhar este post


Link para o post
Compartilhar em outros sites

se tiver acesso ao servidor, redirecciona a página de erro se não me engano é a 500, e mande executar uma outra página, eu uso dessa maneira, ao dar erro seja onde for no site, ele executa essa página que me envia um email a dizer onde foi o erro, linha etc, e de seguida redirecciona para a index.asp

Compartilhar este post


Link para o post
Compartilhar em outros sites

O certo é redirecionar a uma página e informar ao usuário que aconteceu um erro.

 

 

Exacto, entre as coisas que disse de me enviar um email para posteriormente poder corrigir, a página deve apresentar uma mensagem ao utilizador que houve erro, eu tenho um contador em javascript que ao fim de 10 segundos, redirecciona para a index.asp, para não deixar o utilizador sem acção...

Compartilhar este post


Link para o post
Compartilhar em outros sites

incrementando ainda mais, você pode redirecioná-lo para determinada página, e nessa página abrir um pop-up que irá lhe informar do erro e apo´s 5 segundos (pode ser mais ou menos) o pop-up fechar automaticamente. usando um simples js

 

<script language=”javascript”>

function fechapop(){window.setTimeout(“window.close()”,10000);

}

</script>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom a todos, e muito obrigado pelas contribuições dadas.

 

 

O que eu gostaria de fazer, mas não estou conseguindo é o seguinte.

 

Quero bloquer de qualquer jeito essa URL

/listar.asp?lista=categoria&cat_id=118   (esse valor do cat_id é entre 1 a 999)

Ou seja, queria fazer assim, quando fosse essa URL com o "cat_id" entre 1 a 999, direcionar para a index.asp.

 

Agora quando vir a URL correta,

/listar.asp?lista=categoria&cat_id=118&cat_nome=Imobiliárias

Ai segue normalmente para a página desta categoria.

 

Ou seja, não desejo ser notificado por e-mail, informando sobre erro, só preciso bloquear ou redirecionar essa URL para a index.asp.

 

Já tentei de várias formas fazer essa verificação com "IF" mas como tem que verificar os valores do "cat_id" passado na query, ai não consigo.

 

 

MOTIVO: quando a URL vem

categoria&cat_id=118
gero um erro de página, exibindo qual é minha base de dados, nome da página e linha de erro.

 

Qunado a URL vem

categoria&cat_id=118&cat_nome=Imobiliárias
, então é carregada a página normalmente.

 

 

Esse é o link quando clicado:

<a class=linkcat href="./listar.asp?lista=categoria&cat_id=<%=categoria("id")%>
&cat_nome=<%=categoria("nome")%>"> <%=categoria("nome")%></a>

E essa é a parte da página "listar.asp" que recupera as informações.

<%
Dim lista,cat_id,cat_nome,nome,prod_fotoloja,lista_produtos
lista=Request.querystring("lista")
cat_id=Request.querystring("cat_id")
cat_nome=Request.querystring("cat_nome")
nome=Request.querystring("nome")
prod_fotoloja=Request.querystring("fotoloja")
%>

 

Obrigado amigos mais uma vez.

 

William

Compartilhar este post


Link para o post
Compartilhar em outros sites

Velho olha no primeiro post que eu te passei, lá eu te dou a idéia de utilizar if else ou case para fazer a comparação deste número.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Patrique, eu tentei fazer sim seu exemplo, mas como disse eu não consigo na parte de recuperar e passar o valores da query.

 

Public2004, tanto os cat_id como os cat_nome estão corretos desde que a pessoa use os links para acessar a página listar.asp.

 

Mas se manualmente a pessoa ficar digitando o cat_id no navegador.

listar.asp?lista=categoria&cat_id=118
se eu digitar manualmente qualquer numero dentro desse cat_id e der o enter ele mostra a
Microsoft OLE DB Provider for ODBC Drivers error '80040e14' 
[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'cat_id= AND cad_ok='S''. /listar.inc, line 34

Por isso quero inibir da passoa digitar esse cat_id manualmente e der esse erro, assi ele terá que realmente clicar no link.

 

Grato,

 

William

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja bem. Esse tratamente realmente deverá ser feito.

No início da sua página, recupere as variáveis da querystring e antes de processar qualquer outro cód ou informação na tela, faça uma consulta ao seu banco para ver se a var "cat_id" existe e se refere a "cat_nome" - Caso ok, continua com o processo normal, caso negativo, redireciona para outra página qualquer.

 

Att.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então Public2004,

 

Tudo isso está correto como disse.

 

Tenho a base de dados onde armazena os cat_id e cat_nome - OK

 

Tenho a página "Categorias" onde exibi as informações da base de dados, montando os links,

<a class=linkcat href="./listar.asp?lista=categoria&cat_id=<%=categoria("id")%>&cat_nome=<%=categoria("nome")%>"> <%=categoria("nome")%></a>
- OK

 

Tenho a página "listar" que é exibida de acordo com a "categoria" que veio do link. - OK

 

ENTÃO, sempre vai ter um Cat_id e um Cat_nome, nos links.

 

AGORA se a pessoa no Navegador ficar digitando os cat_id MANUALMENTE, é onde da o erro.

 

Por isso gostaria apenas de EVITAR de a pessoa ficar digiatndo esse cat_id do navegador manualmente e mostrar esse erro.

 

 

Se vier assim:

listar.asp?lista=categoria&cat_id=118
ou qualquer numero de 1 a 999 redireciona para a index.asp.

 

 

Se vier pelo link: Categorias" onde exibi as informações da base de dados, montando os links,

<a class=linkcat href="./listar.asp?lista=categoria&cat_id=<%=categoria("id")%>&cat_nome=<%=categoria("nome")%>"> <%=categoria("nome")%></a>
fica como já está.

 

É simples, só quero evitar que digitem MANUALMENTE um cat_id qualquer no navegador, e sim forçar a pessoa a clicar nos links, pois estes estão corretos,

 

O problema é que EU é que não consigo fazer esse IF com os valores da query para redirecionar.

 

Grato. e por favor... muita paciência comigo, um dia chego la tb rsrs.

 

William

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim eu entendi. Agora não dá para evitar que o "mané" fique digitando outros parâmetros na URL, como mencionei, você terá que tratar isso caso ocorra.

Antes de qualquer coisa, recupere as variáveis e em seguida já faça a verificação:

cat_id   = Request.querystring("cat_id")
cat_nome = Request.querystring("cat_nome")
if cat_id = "" AND cat_nome = "" then
    response.redirect("pagina_de_erro.html")
end if
Na sequência, faça uma consulta ao banco de dados para verificar também se os parâmetros fornecidos na URL existem e se relacionam entre si, caso negativo, outro redirect.

 

Att.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora estou FELIZ Public2004,

 

Poxa agora que deu certo, é que vejo a simplicidade que era rsrs, já tinha tudo aqui só faltava inserir esse código que você me passou:

if cat_id = "" AND cat_nome = "" then    response.redirect("pagina_de_erro.html")end if

Deu certinho agora amigo, agora quando o mané rsrs digitar pelo navegador irá direcinar ele rsrs.

 

Veja, eu acompanho os relatório gerado e ultimamente tenho muito acesso pelo IP fora do Brasil, ALGO que não í interessante para mim. e desconfio pelo alto acesso do IP "English" e "Russian"

 

 

 

1. Portuguese (Brazil) 442 - 71,18%

 

2. English (United States) 112 - 18,04%

 

3. Russian 48 - 7,73%

 

4. Chinese (PRC) 7 - 1,13%

 

5. English 5 - 0,81%

 

6. Portuguese (Portugal) 4 - 0,64%

 

7. English (British) 2 - 0,32%

 

8. pt-pt 1

 

 

 

 

Tenho notado várias tentativas de SQL injection, mas graças a Deus até agora, tem bloqueados.

 

Já estou pesquisando tb, como bloquear acesso pelo IP... mas isso é uma próxima etapa.

 

Muito obrigado a todos também pelas contribuições oferecidas.

 

Tópico resolvido com a AJUDA de vcs amigos.

 

Muito grato.

 

William

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok amigo, mas lembre-se que o exemplo que postei serve apenas para checar se os valores estão vazios. Não se esqueça de fazer uma verificação no banco de dados para comparar os valores e evitar os erros, pois o "mané" pode digitar qualquer coisa na URL.

 

Quanto as estatísticas de acesso ao seu website, isso já é assunto para um outro tópico...

 

Boa sorte.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.