Ir para conteúdo

POWERED BY:

Arquivado

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

rockbilly

REPLACE me expliquem esse comando!

Recommended Posts

Olá forum,

 

Estou querendo criar um sistema de login, e andei pesquisando aqui no fórum, mas vi essas linhas de código e gostaria que alguma alma boa, pudesse me explicar para que serve?

 

usuario = Replace(usuario,"'","''")  password = Replace(password,"'","''")

Tipo, vai substituir espaço por o que?

 

Muito obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso serve para substituir as aspas simples por outro caracter, afim de evitar ataques por sql injection. :blink:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ele vai substituir o que esta entre as primeiras aspas pelo que esta na segunda.Nome = "Alex feio"Verdade = Replace(Nome, "feio", "lindo")Response.Write VerdadeResultado:Alex lindo

Compartilhar este post


Link para o post
Compartilhar em outros sites

SQL Injection?Desculpa a gonorância...Eu estou desenvlovendo um sisteminha de atualização online para a minha página e o mesmo tem um campo de login e senha (validação pelo Banco SQL). Quais os cuidados que eu devo tomar pra dificultar ao máximo uma invasão? Acredito que essa "manha" do replace seja importante, não é? O que mais é importante fazer como prevenção? Alguém tem alguma URL que explique isso melhor?obrigado,rodrigofaria

Compartilhar este post


Link para o post
Compartilhar em outros sites

Além da funçao "replace" ser usado nos casos de login e senha (manha das aspas) , é interessante usá-la para tratar todos os caracteres especiais? Como diminuir a vulnerabilidade da "barra de endereços" do meu browser contra um "ataque" maldoso?rodrigofaria

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom pessoal, eu fiquei indo atrás de respostas para as dúvidas sobre o SQL injectio e descobri um outra maneira de se tratar essas string, ao invés do replace.

 

Bom, primeiro, o único caracter especial que, me parace, ser FUNDAMENTAL para poder f com o seu banco são as aspas simples.

 

Segundo, uma boa função para se usar e tratar essas strings é a utilização do Server.HTMLEncode(variável)

que fará com que a variável seja toda tratada como string e interpretará as aspas simples como tal e não como código... Segundo as fontes:

 

Sempre que receber algum string do usuário atra´ves de um web form, use as funções:

 

Server.HtmlEncode();

Server.HtmlDecode();

 

 

Ela já faz todo o tratamento necessário pra você. Sendo assim, scripts maliciosos ou qq coisa desse tipo não irão afetar seu sistema. Use-as tanto pra enviar pro BD quanto pra receber de volta.

Na versão ASP.NET 1.1 isso já pode ser feito automaticamente. Para isso, basta só definir o atributo na diretiva page do web form. <%@ Page ValidateRequest="false“ />

 

 

Renato Guimarães

Sharp Shooters.NET

Ambassador Student

 

 

Bom, além disso, é fundamental, por um questão de segurança e rendimento, que se utilize das STORED PROCEDURES na sua página ASP.

 

Se alguém não concordar ou quiser acrescentar algo, por favor....

 

rodrigofaria

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, além disso, é fundamental, por um questão de segurança e rendimento, que se utilize das STORED PROCEDURES na sua página ASP.

Uma SP tem bom rendimento em todas as ocasiões? Por exemplo: comparando dois select´s, Um busca apenas o campo nome da tabela de funcionarios cujo id seja = 30, e outro busca todos os nomes da tabela de funcionarios cujo nome começa com a letra A. Nesse caso, a SP é viável nas duas situações?

 

Obrigada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, stored procedures são muito mais eficientes, ganham muito em performance sempre...Se eu entendi o que você. quer, bom, da mesma forma que pode fazer um SELECT dentro de outro SELECT você. pode colocar uma SP dentro da outra, melhora ainda mais o rendimento... No caso de uma comparação simples, a idéia é a mesma...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Marcia,

 

Descobri que usar o comando WITH RECOMPILE ao se criar uma PROCEDURE, me parece, faz com que o SQL não armazene em cache o plano de execução da SP, isso é importante também no rendimento, caso os parâmetros passados ao Banco varie com frequencia, veja só:

 

Add the WITH RECOMPILE option to the CREATE PROCEDURE statement if you know that your query will vary each time it is run from the stored procedure.

 

The WITH RECOMPILE option prevents reusing the stored procedure execution plan, so SQL Server does not cache a plan for this procedure and the procedure is always recompiled at run time. Using the WITH RECOMPILE option can boost performance if your query will vary each time it is run from the stored procedure, because in this case the wrong execution plan will not be used.

 

Esse trecho foi tirado do fórum: http://www.msdnbrasil.com.br/forum/ShowPos...px?PostID=11277

 

 

Qualquer coisa, posta aí....

 

rodrigofaria

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal outra dica importantíssima sobre segurança e principalmente sobre o sql injection um método simples e eficiente, e quando fizer o form (formulário) use sempre o método "post" no lugar do "get" o metodo post faz com que o formulário seja passado pelo corpo da página e não pela url como no método "get", e se você não adotar nenhum método ele será "get" por default.abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rodrigo, valeu pela dica.

quando fizer o form (formulário) use sempre o método "post" no lugar do "get"

Por falar em formulários, qual a melhor maneira de passar informações confidenciais de uma página para outra?Em formulários, por exemplo, eu sempre coloco o "hidden" como opção, mas se você exibir o código fonte, a informação pode ser vista.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha só galera.. Fiz agora pouco, um amigo me ajudou...<%dim arrChr(15), Sem, i arrChr(0) = "'" arrChr(1) = "@" arrChr(2) = "#" arrChr(3) = "$" arrChr(4) = "%" arrChr(5) = "¨" arrChr(6) = "&" arrChr(7) = "*" arrChr(8) = "(" arrChr(9) = ")" arrChr(10) = "-" arrChr(11) = "+" arrChr(12) = "=" arrChr(13) = "<" arrChr(14) = ">" arrChr(15) = "?"Sem = Request.form("Nome")For i = 0 to 15 Sem = Replace(Sem, arrChr(i), "")Next Response.Write Sem%>Ele tira todos os caracters invalidos.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Olha só galera.. Fiz agora pouco, um amigo me ajudou...

 

 

<%

dim arrChr(15), Sem, i

arrChr(0) = "'"

arrChr(1) = "@"

arrChr(2) = "#"

arrChr(3) = "$"

arrChr(4) = "%"

arrChr(5) = "¨"

arrChr(6) = "&"

arrChr(7) = "*"

arrChr(8) = "("

arrChr(9) = ")"

arrChr(10) = "-"

arrChr(11) = "+"

arrChr(12) = "="

arrChr(13) = "<"

arrChr(14) = ">"

arrChr(15) = "?"

 

Sem = Request.form("Nome")

 

For i = 0 to 15

Sem = Replace(Sem, arrChr(i), "")

Next

 

Response.Write Sem

%>

 

 

 

Ele tira todos os caracters invalidos.

Vou ser abusado e reduzir esse código

arrChr="',@,#,$,%,¨,&,*,(,),-,+,=,<,>,?"
arrChr =Split(arrChr,",")

Sem = Request("nome")

For i = LBound(arrChr) to UBound(arrChr)
 Sem = Replace(Sem, arrChr(i), "")
Next
Response.Write Sem

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.