Tenho uma tabela(SQL SERVER) onde armazeno receitas culinárias. Gravo desta
forma:
if (Page.IsValid)
{
P_Gastronomia.Componentes.clsReceitas insere = new
P_Gastronomia.Componentes.clsReceitas();
txtIngredientes.Text = txtIngredientes.Text.Replace("\n","<br>");
txtModo.Text = txtModo.Text.Replace("\n","<br>");
txtDica.Text = txtDica.Text.Replace("\n","<br>");
Boolean bInsere =
insere.cadastrarReceita(txtNome.Text,cmbEstado.SelectedValue.ToString(),
txtRendimento.Text, txtTempo.Text, txtGrau.Text,txtCusto.Text,
txtIngredientes.Text, txtModo.Text, txtDica.Text, txtAutor.Text,
txtImagem.Text);
if (bInsere)
{
Response.Write("<script>alert('Receita cadastrada com sucesso
!!');</script>");
this.txtCanal.Text = cmbEstado.SelectedValue.ToString();
P_Gastronomia.Componentes.clsEmail emailAviso = new
P_Gastronomia.Componentes.clsEmail();
emailAviso.enviaEmailAviso(txtNome.Text, txtCanal.Text);
LimpaCampos();
}
---------------------------------------------------------------------------
Grava sem problemas, Campos como ingredientes são do tipo Text, e quando o
usuário preciona enter, inserre o <br>.
Mas quando o usuário edita este campo e faz alguma alteração e manda gravar
novamente ocorre este erro?
--------------------------------------------------------------------------------------------
Erro de Servidor no Aplicativo '/P_Gastronomia'.
--------------------------------------------------------------------------------
Um valor possivelmente perigoso Request.Form foi detectado no cliente
(txtIngredientes="...e branco <br>2 talos de alho ...").
Descrição: A validação de solicitação detectou um valor de entrada de
cliente possivelmente perigoso e o processamento da solicitação foi anulado.
Esse valor pode indicar uma tentativa de comprometer a segurança do
aplicativo, como um ataque de script em diferentes locais. Você pode
desativar a validação de solicitação definindo validateRequest=false na
diretiva Page ou na seção de configuração . No entanto, nesse caso, é
altamente recomendável que o aplicativo verifique explicitamente todas as
entradas.
Detalhes da Exceção: System.Web.HttpRequestValidationException: Um valor
possivelmente perigoso Request.Form foi detectado no cliente
(txtIngredientes="...e branco <br>2 talos de alho ...").
--------------------------------------------------------------------------------------------
O registros que não tem nenhum caracter especial grava normalmente pas este
não!
Tem solução?
Grato
Dirceu
Edite o seu web.config e insira a seguinte linha:
<system.web><pages validateRequest="false" /></system.web>
--
[] s,
Gabriel Cassalho.
"Qualquer dúvida é só postar!"
"Dirceu" escreveu:
Obrigado pela dica!
Mesmo usando parâmentros e Procedures para gravar os dados, se usar
<system.web><pages validateRequest="false" /></system.web>
Pode ocorrer ataques?
Grato
Dirceu
"Gabriel Cassalho" escreveu:
http://www.bufaloinfo.com.br/dicas.asp?cod=593
Você pode gravar sem problemas o que está no textbox, mas tome cuidado ao
trazer os dados do banco em determinados controles, ou mesmo, na página.
Tag's de Script podem tomar o controle do site e, por exemplo, direcionar
para uma página de terceiros.
Dirceu
"Gabriel Cassalho" escreveu:
Sim existe: http://www.asp.net/faq/RequestValidation.aspx
--
Espero ter ajudado,
Att,
Israel Aece
Microsoft MVP, MCP
Projetando.NET UG - Group Leader
http://www.projetando.net
isr...@projetando.net
Blog: http://weblogs.pontonetpt.com/israelaece/
"Dirceu" escreveu:
<%@ Page ValidateRequest="false" %>
É uma solução, não!
Porque ao invés de "GRAVAR" o <BR>, você não grava ele do jeito que está
vindo normalmente (com a quebra de linha normal mesmo) e somente quando for
EXIBIR os dados nas páginas faz a substituição? tipo:
Pra salvar, salva normal...
Pra exibir exibe assim: lblSeuLabel.Text =
VariavelComValorDoBancoDeDados.Replace(vbCrLf, "<BR>")
Assim te garanto que você nunca terá problemas....
"Dirceu" <Dir...@discussions.microsoft.com> wrote in message
news:95EEDC81-0C99-435F...@microsoft.com...
if (dtSet != null)
{
if (dtSet.Tables[0].Rows.Count > 0)
{
txtNome.Text = dtSet.Tables[0].Rows[0][1].ToString();
cmbEstado.SelectedValue = dtSet.Tables[0].Rows[0][2].ToString();
txtRendimento.Text = dtSet.Tables[0].Rows[0][3].ToString();
txtTempo.Text = dtSet.Tables[0].Rows[0][4].ToString();
txtGrau.Text =dtSet.Tables[0].Rows[0][5].ToString();
txtCusto.Text = dtSet.Tables[0].Rows[0][6].ToString();
txtIngredientes.Text = dtSet.Tables[0].Rows[0][7].ToString();
txtModo.Text = dtSet.Tables[0].Rows[0][8].ToString();
txtDica.Text = dtSet.Tables[0].Rows[0][9].ToString();
txtAutor.Text = dtSet.Tables[0].Rows[0][10].ToString();
txtImagem.Text = dtSet.Tables[0].Rows[0][11].ToString();
this.ch_receita.Text = dtSet.Tables[0].Rows[0][0].ToString();
}
}
}
Como aplico isso a essa rotina. Um dos campos que vem da base de dados é
Ingre_Receita, pra vc ter uma parâmentro..
Grato
Dirceu
"Sergio Costa Faria" escreveu: