none
Capturar erro potentially dangerous Request.Form RRS feed

  • Pergunta

  • Opa a todos,

    Pessoal tem como eu capturar o erro "potentially dangerous Request.Form" num controler?

    Gostaria de fazer isto para poder evitar que se apareca a pagina com toda a descrição do erro e assim devolver uma mensagem amistosa para a View.

    Obrigado

    Mensagem do erro que quero capturar:

    Server Error in '/' Application.

    A potentially dangerous Request.Form value was detected from the client (nome="teste@<b>").

    Description: ASP.NET has detected data in the request that is potentially dangerous because it might include HTML markup or script. The data might represent an attempt to compromise the security of your application, such as a cross-site scripting attack. If this type of input is appropriate in your application, you can include code in a web page to explicitly allow it. For more information, see http://go.microsoft.com/fwlink/?LinkID=212874. 

    Exception Details: System.Web.HttpRequestValidationException: A potentially dangerous Request.Form value was detected from the client (nome="teste@<b>").

    quinta-feira, 18 de abril de 2013 02:31

Respostas

Todas as Respostas

  • Olá Joao,

    no model, decore a propriedade Nome com o atributo [AllowHtml] e no método do controller verifique se a string contém HTML. Por exemplo:

    public class Model
    {
    	[AllowHtml]
    	public string Nome {get; set;}
    }
    
    [HttpPost]
    public ActionResult Enviar(Model model)
    {	
    	if (model.Nome != HttpUtility.HtmlEncode(model.Nome))
    		model.Erro = "Mensagem amistosa.";	
    	
    	return View(model);
    }

    Leonardo Lima da Silva

    quinta-feira, 18 de abril de 2013 03:51
  • Boa tarde, Leonardo

    OLha não tem uma forma mais generica tipo pegar pelo Try Catch por exemplo pois no meu site tem varios campos textos em varias viewers e se eu decorar em todas as class vai ficar meio complicado.

    Obrigado

    quinta-feira, 18 de abril de 2013 18:21
  • Olá, uma forma mais genérica é utilizar customErrors no web.config. Você pode pesquisar também sobre o HandleErrorAttribute e GlobalFilters. Ou ainda tentar manipular o erro no evento Application_Error do global.asax. Com try-catch creio não ser possível porque a exceção é lançada fora do escopo do controller.

    Veja esse link:

    http://www.codeproject.com/Articles/422572/Exception-Handling-in-ASP-NET-MVC


    Leonardo Lima da Silva

    • Marcado como Resposta Joao Nivaldo quinta-feira, 18 de abril de 2013 23:26
    quinta-feira, 18 de abril de 2013 22:46
  • Valeu era isto mesmo que eu queria saber.

    Obrigado

    quinta-feira, 18 de abril de 2013 23:26