Pergunta

A partir de um relatório de um utilizador, 'ao editar foo. textboxBar permite caracteres especiais que produzem um erro .net aviso ao salvar '

textboxBar.Text é atribuir a um objeto e salvos usando nHibernate

<property name="TextboxBar" length="255" not-null="false" />

Pensando que pode ser nHibernate não escapar strings, mas não pode encontrá-lo na documentação.

O nHibernate 1.2.0 escapar automaticamente cordas, ligação apreciado?

Foi útil?

Solução

Eu duvido que ele mesmo precisa escapar cordas -. Eu esperaria valores a serem passados ??em declarações parametrizados

Eu suspeito fortemente isso não tem nada a ver com nHibernate - Eu suspeito que este é apenas um erro ASP.NET, embora se admita que isso é assumir que é uma aplicação ASP.NET. Se este for o caso, você provavelmente só quer desativar a validação para essa página.

Veja a ASP.NET FAQ página na validação para mais detalhes .

Outras dicas

Não é totalmente claro qual é a situação da sua pergunta, ou mesmo se este é ASP.NET, mas poderia o usuário ter sido referindo-se à "Um valor Request.Form potencialmente perigoso foi detectado do cliente ..." mensagem de erro que ASP.NET gera?

Se assim for, esta mensagem de erro não está relacionado com NHibernate, mas está relacionado com fato de que, por padrão, as tentativas ASP.NET para detectar entradas de formulário perigosas que podem ser uma tentativa de ataque de Cross Site Scripting.

Para corrigir isso, você precisa assumir a responsabilidade de HTML codificação de todas as suas saídas. Se você estiver usando formulários web, você deve adicionar esta diretiva de página para sua página ...

<%@ Page ValidateRequest="false" ... %>

... e, em seguida, certifique-se de validar a entrada si e / ou têm o cuidado de sempre de saída de codificação quando você incluí-lo em HTML mais tarde.

Se você estiver usando ASP.NET MVC, você faz a mesma coisa, adicionando o atributo [ValidateInput] para a sua ação do controlador:

[AcceptVerbs(HttpVerbs.Post)]
[ValidateInput(false)]
public ActionResult Edit(...)
{
   return View();
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top