Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Caracteres especiais

341 views
Skip to first unread message

Dirceu

unread,
Jul 18, 2005, 7:00:02 AM7/18/05
to
Olá pesoal,

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

Gabriel Cassalho

unread,
Jul 18, 2005, 7:05:03 AM7/18/05
to
Isso é uma segurança do ASP.NET para evitar ataques que usam scripts.

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:

Dirceu

unread,
Jul 18, 2005, 7:15:02 AM7/18/05
to
Olá Gabriel,

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:

Gabriel Cassalho

unread,
Jul 18, 2005, 7:45:04 AM7/18/05
to
Veja a seguinte dica:

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

unread,
Jul 18, 2005, 8:16:04 AM7/18/05
to
Não existe uma diretiva local, que possa afetar somente o formulário, ao
invés de fazer via web.config

Dirceu

"Gabriel Cassalho" escreveu:

Israel Aece

unread,
Jul 18, 2005, 8:29:02 AM7/18/05
to
Ola Dirceu,

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:

Gabriel Cassalho

unread,
Jul 18, 2005, 8:31:10 AM7/18/05
to
Tente usar assim na página:

<%@ Page ValidateRequest="false" %>

Dirceu

unread,
Jul 18, 2005, 9:03:05 AM7/18/05
to
Não deu certo...
Tenho um diretório chamado receita, como faco para criar uma web.config
neste diretorio e fazer com que programa de atualização, usar esta e o
restante do sistema utilizar o web.config padrão?

É uma solução, não!

Sergio Costa Faria

unread,
Jul 18, 2005, 9:08:55 AM7/18/05
to
Dirceu,

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...

Dirceu

unread,
Jul 18, 2005, 11:45:07 AM7/18/05
to
Olá Sérgio,
Uso C#. Esta é minha rotina:
private void preencheGrid(string ch_receita)
{
P_Gastronomia.Componentes.clsReceitas usuario = new
P_Gastronomia.Componentes.clsReceitas();
DataSet dtSet = usuario.buscaUsuario("","","","",ch_receita );

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:

0 new messages