none
TextBox não aceita alguns caracter por conta e proteção de HTML Injections RRS feed

  • Pergunta

  •  tenho um TextoBox num webUserControl.

    Percebem que na última linha e coloquei <Melhorias>, quando tem esses caracteres o .Net entende que pode ser um HTML Injection e sobe uma exceção.

    Um forma e tratar isso é na diretiva @Page, porém no *.aspx colocar ValidateRequest="false", porém essa configuração não propaga para o UserWebControl, além de "abrir as pernas" totalmente. Tem alguma ideia de como tratar isso?

    Já tentei dar replace nesses caracteres com java scritp e não funcionou, tentei usar o RegularExpressionValidadtor com expressão regular e não funcionou também.

    Gostaria de dar uma mensagem amigável ou mesmo não dizer nada e simplesmente salavr o texto dando replace.

    • Movido AndreAlvesLima quinta-feira, 9 de agosto de 2012 18:12 (De:.NET Development - Geral)
    quinta-feira, 9 de agosto de 2012 17:06

Respostas

  • Fabio, se eu não me engano, será impossível você sequer gerar o PostBack se o ValidateRequest não estiver definido como false. Ou seja, o ASP.NET bloqueia o envio antes mesmo de você conseguir tratar o código. (Esta é uma informação a se verificar.)

    Eu uso controle aqui de RichTextBox dentro de um UserControl. Não uso o ValidateRequest no meu UserControl mas uso no ASPX que usa o UserControl. No meu WebConfig, eu configurei o seguinte:

    <system.web>
         <httpRuntime requestValidationMode="2.0" maxRequestLength="100000" />
    </system.web>

    Na query que salvo o conteúdo do campo, uso StoredProcedure e SqlParameter como fonte de parâmetro. Desta forma, me protejo contra Injections. Se quiser MAIS segurança ainda, filtre o conteúdo do TextBox.Text usando HtmlEncode (http://msdn.microsoft.com/en-us/library/w3te6wfz.aspx)


    Rafael Santos

    "Quem disse que não escrevo poesias? A diferença é que as minhas começam com using System;"


    • Editado Rafa Santos sexta-feira, 10 de agosto de 2012 14:30
    • Sugerido como Resposta Luiz Gu Oka sexta-feira, 10 de agosto de 2012 16:43
    • Marcado como Resposta Harley Araujo segunda-feira, 13 de agosto de 2012 11:53
    sexta-feira, 10 de agosto de 2012 14:29

Todas as Respostas

  • Prezado(a),
    Estou migrando seu post para o fórum de ASP.NET.
    Por favor, das próximas vezes que tiver alguma dúvida relacionada a esse assunto, poste por lá.
    Obrigado.

    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima

    quinta-feira, 9 de agosto de 2012 18:12
  • Fabio, se eu não me engano, será impossível você sequer gerar o PostBack se o ValidateRequest não estiver definido como false. Ou seja, o ASP.NET bloqueia o envio antes mesmo de você conseguir tratar o código. (Esta é uma informação a se verificar.)

    Eu uso controle aqui de RichTextBox dentro de um UserControl. Não uso o ValidateRequest no meu UserControl mas uso no ASPX que usa o UserControl. No meu WebConfig, eu configurei o seguinte:

    <system.web>
         <httpRuntime requestValidationMode="2.0" maxRequestLength="100000" />
    </system.web>

    Na query que salvo o conteúdo do campo, uso StoredProcedure e SqlParameter como fonte de parâmetro. Desta forma, me protejo contra Injections. Se quiser MAIS segurança ainda, filtre o conteúdo do TextBox.Text usando HtmlEncode (http://msdn.microsoft.com/en-us/library/w3te6wfz.aspx)


    Rafael Santos

    "Quem disse que não escrevo poesias? A diferença é que as minhas começam com using System;"


    • Editado Rafa Santos sexta-feira, 10 de agosto de 2012 14:30
    • Sugerido como Resposta Luiz Gu Oka sexta-feira, 10 de agosto de 2012 16:43
    • Marcado como Resposta Harley Araujo segunda-feira, 13 de agosto de 2012 11:53
    sexta-feira, 10 de agosto de 2012 14:29