Ir para conteúdo

POWERED BY:

Arquivado

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

fabiosc80

Sistema de Login "Seguro"

Recommended Posts

E ai pessoal beleza?

 

Seguinte estou fazendo um site que precisa de um sistema de Login aonde tenha muita segurança na hora de se logar.

 

Eu estava usando esse sistema aqui:

 

<!--#include file="conexao.asp"--><%'Recuperando os dadosSession("Email") = Replace(request("Email"),"'","")Session("Senha")   = Replace(request("Senha"),"'","")If Session("Email") = Empty Then   Session("mensagem") = "O campo Email é obrigatório !"   Response.Redirect("index.asp")End IFIf Session("Senha") = Empty Then   Session("mensagem") = "O campo SENHA é obrigatório !"   Response.Redirect("index.asp")End IFDim BC,TB,SQAbreBancoSQ = "SELECT * FROM Clientes WHERE Email = '" & Session("Email") & "' and Senha = '" & Session("Senha") & "'"SET TB = BC.Execute(SQ)IF TB.EOF THEN   Session("mensagem") = "Email  e SENHA inválidos !"   FechaBanco   Response.Redirect("index.asp")Elsesession("Cod2") = TB("CodCliente")FechaBancoResponse.Redirect("index.asp")End IF%>

Aonde ele abre o Banco e Recupera os Campos Email e Senha e se estiverem iguais aos do banco ele se loga.

Porem eu não sinto confiança nesse sistema nem um pouco.

 

E outra agora preciso usar SSL, alguem tem dicas para me dar de como funcionam sistemas de logins assim ou de algum muito bom?

 

Abraços,

Compartilhar este post


Link para o post
Compartilhar em outros sites

VAMU LÁ

 

TALVEZ AJUDE

ASP

[*]

 

[*]EMAIL REQUEST.FORM("EMAIL")

 

[*]SENHA REQUEST.FORM("SENHA")

 

[*]

 

[*]SQL "SELECT EMAIL FROM TABELA WHERE EMAIL = '" &EMAIL&"' "

 

[*]

 

[*]IF RS.BOF AND RS.EOF THEN

 

[*]' beleza PASSOU

 

[*]ELSE

 

[*]' EMAIL EXISTE

 

[*]END IF

 

[*]

 

[*]SQL "SELECT SENHA FROM TABELA WHERE SENHA = '" &SENHA&"' "

 

[*]

 

[*]IF RS.BOF AND RS.EOF THEN

 

[*]' beleza PASSOU

 

[*]ELSE

 

[*]' SENHA EXISTE

 

[*]END IF

 

[*]

 

[*]SQL " SELECT EMAIL,SENHA FROM TABELA WHERE SENHA='"&SENHA&"' AND EMAIL = '"& EMAIL&"' "

 

[*]

 

[*]IF RS.BOF AND RS.EOF THEN

 

[*]' beleza PASSOU

 

[*]ELSE

 

[*]' SENHA E EMAIL NAO CONFEREM

 

[*]END IF

 

 

VALEW

Compartilhar este post


Link para o post
Compartilhar em outros sites

Meirelles,Voce não entendeu,Eu coloquei o código aqui para ser analisado e verem como ele deve ser inseguro.E tambem pq preciso de dicas sobre um sistema seguro aonde usasse até SSL.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma Dica:Não esquece de destruir os Objetos que você coloca nas Session!Fazendo isso você não deixa Sobrecarregar o Servidor!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tipo ... ou você destroi todas as sessoes criadas

 

ASP

[*]Session.Abandon

 

Ou entao remove sessoes especificas que não serão mais utilizadas

 

ASP

[*]Session.Contents.Remove("Senha")

 

[*]Session.Contents.Remove("Email")

 

[*]Session.Contents.Remove("Mensagem")

 

Evitando q as sessoes fiquem ativas no servidor mesmo depois q o visitante jah saiu do seu site

Compartilhar este post


Link para o post
Compartilhar em outros sites

e ai cara beleza...

que banco de dados você esta usando?

dessa forma fica muito facil o usuario dar um JetIn no seu banco...

ele tem acesso direto as tabelas.... e você nao tem controle do que o usuario pode ou nao acessar...

recomendo você usar procedures e view e dar acesso a eles e bloquear todos os acessos direto as tabelas....

 

assim dificulta o hack de alterar e entrar no seu sistema...

 

eu costumo usar a conecção ou ate msm usuarios do computador para dar acesso ao Banco de dados...

exemplo de coneccao ao SQL Server...

Provider=SQLOLEDB.1;Password=suasenha;Persist Security Info=True;User ID=seuLogin;Initial Catalog=master

caso você nao saiba criar essas conecçoes faça o seguinte...

crie um arquivo test.txt e depois renomeio para teste.udl

configure a sua coneccao com suas preferenças e aplique elas

feche esse arquivo de configuração e depois renomeio de novo pra teste.txt

pronto você vai ter a conecao pronta pra usar....

 

[oledb]; Everything after this line is an OLE DB initstringProvider=SQLOLEDB.1;Password=suasenha;Persist Security Info=True;User ID=seuLogin;Initial Catalog=master

 

qualquer coisa me da um toc

se eu demorar manda MP beleza...

 

faloe T+

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza cara?

 

Seguinte,

 

Por causa de redução de custos a empresa quer começar o site na primeira versão dele usando o banco de dados Access para só depois daqui uns meses utilizar o SQLSERVER.

O site vai ter varias partes de acesso diferentes. Dependendo daonde o cliente estiver acessando o site.

Entao muitas partes do site vao ter que estar super bloqueadas.

 

 

e ai cara beleza...

que banco de dados você esta usando?

dessa forma fica muito facil o usuario dar um JetIn no seu banco...

ele tem acesso direto as tabelas.... e você nao tem controle do que o usuario pode ou nao acessar...

recomendo você usar procedures e view e dar acesso a eles e bloquear todos os acessos direto as tabelas....

 

assim dificulta o hack de alterar e entrar no seu sistema...

 

eu costumo usar a conecção ou ate msm usuarios do computador para dar acesso ao Banco de dados...

exemplo de coneccao ao SQL Server...

Provider=SQLOLEDB.1;Password=suasenha;Persist Security Info=True;User ID=seuLogin;Initial Catalog=master
caso você nao saiba criar essas conecçoes faça o seguinte...

crie um arquivo test.txt e depois renomeio para teste.udl

configure a sua coneccao com suas preferenças e aplique elas

feche esse arquivo de configuração e depois renomeio de novo pra teste.txt

pronto você vai ter a conecao pronta pra usar....

 

[oledb]; Everything after this line is an OLE DB initstringProvider=SQLOLEDB.1;Password=suasenha;Persist Security Info=True;User ID=seuLogin;Initial Catalog=master

qualquer coisa me da um toc

se eu demorar manda MP beleza...

 

faloe T+

<{POST_SNAPBACK}>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo,

 

E sobre SSL oque vcs tem a dizer? Aonde ele entra num Login?

tem servidores que disponibilizam o serviço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas Marcello...

 

O SqlInjection não é só com aspas simples que é perigoso?

 

 

Fabio.

Realmente seu código é falho e pode ser burlado facilmente por SQLInjections.

 

Dê uma olhada neste artigo e voce verá como o que estou dizendo é verdade. E tente alterar seu código para inibir isto.

 

http://forum.brclube.net/index.php?showtopic=2387

<{POST_SNAPBACK}>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Modos de invadir com SQL INJECTION

 

ASP

[*] or'1--

 

[*]' or '1'='1 

 

[*]' or 1=1-- 

 

[*]'or''=' 

 

[*]' or 'a'='a 

 

[*]') or ('a'='a 

 

[*]b' or ' 1=' 

 

[*]' or '1 

 

[*]' or '| 

Falo!!!!!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nem sempre! Se o campo for numérico não precisa da '

Compartilhar este post


Link para o post
Compartilhar em outros sites

e ai fabiosc80!

 

seguinte, eu não mecho com Acess mais ele possui entradas de usuario e senha.

vai ser isso que você vai ter que fazer por enqto!

e vai ter que tratar todos os campo para bloquear a entrada de caracteres "invalidos" pro ASP

 

vote passar essas funcoes em JavaScript, elas bloqueiam muitos dos caracteres, na verdade ela nao ta completa ainda tenho que liberar acesso a ela para mais caractes "Ç ç" e o "ENTER" por exemplo, mais já é possivel você ir usando!

 

mais umas dicas

qdo o usuario entrar na pagina crie uma sessao Login por exemplo e verifique se ela existe em todas as paginas, se esse sessao nao existir manda ele de volta pra principal

 

crie "correntes de paginas"

funciona da seguinte forma

existe um caminho para chegar ate tal pagina certo, por exemplo

ele tem que ir da busca_cli.asp -> resul_cli.asp -> updet_cli.asp

verifique em cada pagina qual foi a ultima que ele acessou,

caso ele esteja na updet_cli.asp e tenha vindo da busca_cli.asp manda ele de novo pra principal... e assim por diante...

isso dificulta um pouco a ação indevida no site...

acho que é so

t + cara...

qualquer coisa da um toc ai...

Como chamar a funcao

<input name="CliEndN" type="text" class="FORMULARIO_Campo" id="CliEndN" size="4" maxlength="6" onKeypress="return CaracterNum(event);"  >

Codigo JavaScript

<!------------------------------------------------------->function CaracterLetra(e) {if(window.event) {	// for IE, e.keyCode or window.event.keyCode can be used	key = e.keyCode;//	alert(key);}else if(e.which) {	// netscape	key = e.which;}if (key!=8 || key!=32 || key!=44 || key < 64 || key > 91 || key < 97 || key > 122) return (( (key > 64) && (key < 91)) || ((key > 96) && (key < 123)) || (key==8) || (key==32) || (key==44));{   return true; }}<!------------------------------------------------------->function CaracterNum(e) {if(window.event) {	// for IE, e.keyCode or window.event.keyCode can be used	key = e.keyCode;//	alert(key);}else if(e.which) {	// netscape	key = e.which;}if (key < 48 || key > 57) return (( (key > 48) && (key < 57) ) || (key==8)); //(( (key > 48) && (key < 57) ) || (key==8));{   return true; }}<!------------------------------------------------------->function CaracterNumLetra(e) {if(window.event) {	// for IE, e.keyCode or window.event.keyCode can be used	key = e.keyCode;//	alert(key);}else if(e.which) {	// netscape	key = e.which;}if (key!=8 || key!=32 || key < 48 || key > 57 || key!=44 || key < 64 || key > 91 || key < 97 || key > 122) return (( (key > 48) && (key < 57) ) || ( (key > 64) && (key < 91)) || ((key > 96) && (key < 123)) || (key==8) || (key==32) || (key==44));{   return true; }}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gostei das Dicas Mr Crowley,

 

Somando isso com o SSL vai ficar Show.

 

Ai é só jogar na mão de um bom Testador e veremos como fica.

 

Vou continuar o desenvolvimento aqui,

 

Abraços,

 

 

 

e ai fabiosc80!

 

seguinte, eu não mecho com Acess mais ele possui entradas de usuario e senha.

vai ser isso que você vai ter que fazer por enqto!

e vai ter que tratar todos os campo para bloquear a entrada de caracteres "invalidos" pro ASP

 

vote passar essas funcoes em JavaScript, elas bloqueiam muitos dos caracteres, na verdade ela nao ta completa ainda tenho que liberar acesso a ela para mais caractes "Ç ç" e o "ENTER" por exemplo, mais já é possivel você ir usando!

 

mais umas dicas

qdo o usuario entrar na pagina crie uma sessao Login por exemplo e verifique se ela existe em todas as paginas, se esse sessao nao existir manda ele de volta pra principal

 

crie "correntes de paginas"

funciona da seguinte forma

existe um caminho para chegar ate tal pagina certo, por exemplo

ele tem que ir da busca_cli.asp -> resul_cli.asp -> updet_cli.asp

verifique em cada pagina qual foi a ultima que ele acessou,

caso ele esteja na updet_cli.asp e tenha vindo da busca_cli.asp manda ele de novo pra principal... e assim por diante...

isso dificulta um pouco a ação indevida no site...

acho que é so

t + cara...

qualquer coisa da um toc ai...

Como chamar a funcao

<input name="CliEndN" type="text" class="FORMULARIO_Campo" id="CliEndN" size="4" maxlength="6" onKeypress="return CaracterNum(event);"  >
Codigo JavaScript

<!------------------------------------------------------->function CaracterLetra(e) {if(window.event) {	// for IE, e.keyCode or window.event.keyCode can be used	key = e.keyCode;//	alert(key);}else if(e.which) {	// netscape	key = e.which;}if (key!=8 || key!=32 || key!=44 || key < 64 || key > 91 || key < 97 || key > 122) return (( (key > 64) && (key < 91)) || ((key > 96) && (key < 123)) || (key==8) || (key==32) || (key==44));{   return true; }}<!------------------------------------------------------->function CaracterNum(e) {if(window.event) {	// for IE, e.keyCode or window.event.keyCode can be used	key = e.keyCode;//	alert(key);}else if(e.which) {	// netscape	key = e.which;}if (key < 48 || key > 57) return (( (key > 48) && (key < 57) ) || (key==8)); //(( (key > 48) && (key < 57) ) || (key==8));{   return true; }}<!------------------------------------------------------->function CaracterNumLetra(e) {if(window.event) {	// for IE, e.keyCode or window.event.keyCode can be used	key = e.keyCode;//	alert(key);}else if(e.which) {	// netscape	key = e.which;}if (key!=8 || key!=32 || key < 48 || key > 57 || key!=44 || key < 64 || key > 91 || key < 97 || key > 122) return (( (key > 48) && (key < 57) ) || ( (key > 64) && (key < 91)) || ((key > 96) && (key < 123)) || (key==8) || (key==32) || (key==44));{   return true; }}

<{POST_SNAPBACK}>

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.