Ir para conteúdo

POWERED BY:

Arquivado

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

hao

[Resolvido] Meu código esta vulnerável a ataques!

Recommended Posts

Fala galera,

 

Estou montando um painel administrativo de mais um site, e uma pessoa disse que conseguiu burlar e entrar em meu sistema, mas ele não me disse como fez isso. Estou meio grilado com isso, daí venho aqui ver se alguém consegue saber qual a falha em meus códigos! Bem vamos as paginas:

 

index.asp

<form action="login_validar.asp" method="post" name="login_validar"   id="login_validar">			  <fieldset>				  <label   for="campo_usuario">Usuário</label>				  <input type="text" size="20" maxlength="20"   id="campo_usuario" name="campo_usuario"     />				  <label   for="campo_senha">Senha</label>				  <input type="password" size="20"   maxlength="20" id="campo_senha"     name="campo_senha" />				  <button type="submit" value="Entrar"   class="enviar_grande" >Entrar</button>			  </fieldset>		  </form>

login_validar.asp

<!--#include file="conexao_geral.asp"-->  <%    usuario = request.Form("campo_usuario")  senha = request.Form("campo_senha")    if usuario <> "" then	  usuario = replace(usuario,"'","")	  end if	  	  if senha <> "" then		  senha = replace(senha,"'","")		  end if		  		  if trim(usuario) <> "" AND trim(senha) <> "" then		  		  SQL_login = "SELECT * FROM usuarios WHERE usuario = '"&usuario&"' AND   senha = '"&senha&"'"		  set rs_login = Conn.Execute(SQL_login)		  		  if not rs_login.eof then			  session("logado") = rs_login("senha")				response.Redirect("painel.asp?id_usuario="&rs_login("id_usuario")&"")			  else			  response.Redirect("index.asp?erro=1")		  end if  	  else  	  response.Redirect("index.asp?erro=1")    end if    %>  <!--#include file="fecha_conexao.asp"-->

painel.asp

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>  <!--#include file="conexao_geral.asp"-->  <%    id_usuario = request.QueryString("id_usuario")    if id_usuario = "" then  response.Redirect("index.asp")  end if    SQL_login = "SELECT * FROM usuarios WHERE id_usuario="&id_usuario  set rs_login = Conn.Execute(SQL_login)    if rs_login.eof then  response.Redirect("index.asp")  end if    %>  <!--#include file="session_logado.asp"-->  <!--#include file="inclusoes.asp"-->  --- Aqui vem o codigo html

session_logado.asp

<%    if session("logado") <> rs_login("senha") then  session.Abandon()  response.Redirect("index.asp")  end if    %>

inclusoes.asp

tem apenas algumas funcoes uteis.

 

conexao_geral.asp

<%    Set Conn = Server.CreateObject("ADODB.Connection")    Conn.Open = "Driver={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("nome_do_banco.mdb")    %>  Esse nao eh o nome do meu bd, apenas coloquei assim aqui para dar uma ideia.

O proprio cara q viu o erro (ele se denomina hacker) disse que era bom autenticar via diretorios protegidos pela hospedagem, porem eu consegui, mas teria q mudar todo o meu codigo, e pensei que teria outra alternativa.

 

Estava lendo alguns tutoriais e disseram q nao era bom deixar a session() com um nome facil como no meu caso "logado", eu mudei isso no meu codigo atual, mas nao sei se era apenas isso.

 

Por favor me deem uma forcinha!! Valeu gente!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara seu banco está bem a vista, usa SQL SERVER, MySQL

 

Realmente sua session está "absurda" (hehehhe)

 

Faça tratamentos mais rigorosos para evitar a invasão via SQL

 

a depender do que esteja fazendo a criptografia é uma boa solução, usar o Server.HTMLEncode em alguns casos pode ser uma boa opção!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

tipo o nome do banco nao eh esse, coloquei apenas ali, mas eu uso nomes bem grotescos,no momento só monto em access msm, e nao uso criptografia, isso ajudaria? tem algum codigo que faça isso? no php tem o md5 agora no asp nao sei.estou lendo sobre sql injection, e vi q da pra invadir de varios jeitos, enviando da propria url os dados, entao o certo seria tratar TODAS varias, sem exceção de nenhuma?

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara... axo meio dificil um codigo assim fica vulneravel....bem... sessions são faceis de descobrir sim..mass...uma alternativa mto boua que estou usando é ajax...bem, fica praticamente impossivel a pessoa descobrir o nome da pagina.asp que está sendo requisitada!basta você esconder bem os links!criar mascara html por framsetcaso esteja utilizando ACCESS, o que é 100% recomendavel, é colocar o arquivo.mdb em uma pasta que não esteja compartilhada, a maioria dos servidores de hospedagem liberam uma pasta chamada DB e outra WWW justamente para isso, evitando assim o cara fazer download do banco...ja ajuda muito...codificação é uma boua escolha sim, MD5 em asp nunca ouvi fala, mais ja vi um componente muito bom da Persists chamado ASP_ENCRYPTprocura mais a respeito..também você pode criar sua própria codificação...não é dificil, basta lógica...como por exemplo gerar uma função de embaralhamento de caracters ex:a - rt - qe - oe assim por diante, fazendo com que cada letra se substitua pela outra, mas soh chame ela na hora de verificar o conteudo de uma possivel variavel, ou session! isso vai fazer com que mesmo que o cara acesse a session, ele não entenda nada o que se passa pois vai estar tudo embaralhado....é isso..abrass

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigão respondendo sua pergunta de criptografia:

 

Existe sim o MD5 para ASP, olha ai pra vê se pode te ajudar!!

http://forum.imasters.com.br/index.php?sho...hl=criptografia

Compartilhar este post


Link para o post
Compartilhar em outros sites

valeu maux, acho que ajax eh muito bom, mas esconder somente nao iria adiantar, mas com certeza eh uma boa solução, valeu pelas dicas!ted, esse codigo md5 eh muito bom! com certeza vou usar!! valeu!!para ajudar vou tratar melhor todas as variaveis, para ver se ajudar contra ataques.

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.