2010-09-02 16 views
5

Tengo varios cuadros de texto en un formulario web ASP.NET. Quiero asegurarme de que los usuarios estén no ingresando HTML en esos cuadros de texto. Sin embargo, no estoy seguro de cómo evitar que se ingrese HTML. Debido a esto, decidí que solo quiero permitir caracteres alfanuméricos, espacios, signos de exclamación, signos agudos, signos de dólar, signos de porcentaje, carátulas, estrellas y paréntesis izquierdo y derecho. Estoy omitiendo el signo y porque no quiero que ingresen algo así como "< script &rt; ..."Cómo evitar la entrada de HTML en el cuadro de texto del formulario web ASP.NET

¿Cómo puedo hacer esto? ¿Lo estoy haciendo de la manera correcta?

¡Gracias!

+0

Independientemente del método que elija, asegúrese de validar su entrada tanto en el cliente como en el servidor: la validación del cliente se puede evitar fácilmente con un depurador de JavaScript. –

Respuesta

1

un vistazo aquí http://msdn.microsoft.com/en-us/library/ff649310.aspx

Se puede poner una declaración general en el web.config ValidateRequest = true comprobará todas las entradas de usuario y un error si un usuario inserta algo con su mala disposición.

Si necesita permitir algunas etiquetas html, tendrá que hacer las suyas.

+0

+1 está incorporado ... (maneja el error por supuesto). –

+0

-1: No creo que arrojar errores/excepciones a los usuarios sea una buena práctica. Y ValidateRequest = true no cubre todas las formas de prevención XSS, si esa es la intención. –

+0

@Caspar Kleijne puede proporcionar algunas referencias a ValidateRequest que no cubre todas las formas de XSS? Tengo curiosidad por leer sobre eso. Pensé que Microsoft haría un mejor trabajo para capturar todos los casos de entrada de usuarios peligrosos mejor de lo que el desarrollador promedio podría hacer. –

1

La página, de forma predeterminada, evitará que los usuarios publiquen HTML o secuencias de comandos en cuadros de texto o áreas de texto. Ver MSDN

0

Se puede utilizar un método para limpiar los códigos HTML de entrada como:

public static string ClearHTML(string Str, Nullable<int> Character) 
{ 
    string MetinTxtRegex = Regex.Replace(Str, "<(.|\n)+?>", " "); 

    string MetinTxtSubStr = string.Empty; 

    if (Character.HasValue) 
    { 
     if (MetinTxtRegex.Length > Character) 
     { 
      MetinTxtSubStr = MetinTxtRegex.Substring(0, Character.Value); 
      MetinTxtSubStr = MetinTxtSubStr.Substring(0, MetinTxtSubStr.LastIndexOf(" ")) + "..."; 
     } 
     else 
     { 
      MetinTxtSubStr = MetinTxtRegex; 
     } 
    } 
    else 
    { 
     MetinTxtSubStr = MetinTxtRegex; 
    } 
    return MetinTxtSubStr; 
} 
0

he utilizado:

HttpUtility.HtmlEncode(); 

Más información here.

Cuestiones relacionadas