Pregunta

Estoy usando un editor de texto enriquecido en una página web..NET tiene una función que impide publicar etiquetas HTML, por lo que agregué un fragmento de JavaScript para cambiar los paréntesis angulares y el alias de un par de caracteres antes de la publicación.El alias se reemplaza en el servidor con el corchete angular necesario y luego se almacena en la base de datos.Dejando a un lado XSS, ¿cuáles son las formas comunes de solucionar este problema?(es decir.¿Hay una mejor manera?)

Si tiene comentarios sobre XSS (secuencias de comandos entre sitios), estoy seguro de que ayudará a alguien.

¿Fue útil?

Solución

De hecho, hay una manera de desactivar esa "función".Esto permitirá al usuario publicar los caracteres que desee y no será necesario convertir los caracteres en un alias usando Javascript.Vea este artículo para deshabilitar la validación de solicitudes.Significa que tendrás que hacer tu propia validación, pero por lo que suena en tu publicación, parece que eso es lo que buscas hacer de todos modos.También puedes desactivarlo por página siguiendo las instrucciones aquí.

Otros consejos

Creo que la forma más segura de hacerlo es NO permitir que el usuario cree etiquetas con su WISYWIG.Tal vez usando algo como un editor de rebajas como en este sitio o disponible aquí. Sería otro enfoque.

También mantenga la directiva de página ValidateRequest=true, que debería impedir que se envíe el marcado en la solicitud; por supuesto, deberá manejar este error cuando aparezca.Las personas siempre podrán insertar etiquetas en la solicitud de cualquier manera usando extensiones de Firefox como Alteración de datos, pero ValidateRequest=true debería al menos impedir que ASP.NET los acepte.

Jeff hizo recientemente aquí una publicación sencilla sobre ataques XSS.También habla de hacer que sus cookies sean HttpOnly, que es una semidefensa contra el robo de cookies.¡Buena suerte!

Mi primer comentario sería evitar el uso de JavaScript para cambiar los corchetes angulares.Evitar esto es tan simple como deshabilitar JavaScript en el navegador.Casi todos los lenguajes del lado del servidor tienen algún método de utilidad que convierte algunos caracteres HTML en sus contrapartes de entidad.Por ejemplo, PHP usa htmlentities() y estoy seguro de que .NET tiene un método de utilidad equivalente.Como mínimo, puede reemplazar las expresiones regulares de los corchetes angulares, paréntesis y comillas dobles, y eso le permitirá avanzar mucho hacia una solución segura.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top