Validación de entrada cuando se utiliza un editor de texto enriquecido
-
19-09-2019 - |
Pregunta
Tengo una aplicación ASP.NET MVC y estoy usando CKEditor para la entrada de texto. He apagado la validación de entrada por lo que el HTML creado a partir de CKEditor se puede pasar a la acción del controlador. entonces yo estoy mostrando el código HTML entrado en una página web.
Sólo tengo ciertos botones en CKEditor activado, pero es evidente que cualquier persona puede enviar cualquier texto que quieren bajar. Quiero ser capaz de mostrar el código HTML de la página después de que el usuario ha entrado en ella. ¿Cómo puedo validar la entrada, pero aún así ser capaz de mostrar las pocas cosas que están habilitados en el editor?
Así que, básicamente quiero desinfectar todo a excepción de algunas cosas claves como negrita, cursiva, listas y enlaces. Esto hay que hacer del lado del servidor.
Solución
¿Qué hay de AntiXSS ?
Otros consejos
Vea todo mi respuesta aquí de pregunta similar:
He encontrado que la sustitución del ángel soportes con soportes de ángel codificados resuelve la mayoría de los problemas
Se puede crear una "lista blanca" de las clases para las etiquetas HTML que desea permitir. Se podría empezar por HTML codificación de todo el asunto. A continuación, reemplace una serie de secuencias "permitidas", tales como:
"<strong>" and "</strong>" back to "<strong>" and "</strong>"
"<em>" and "</em>" back to "<em>" and "</em>"
"<li>" and "</li>" back to ... etc. etc.
Para cosas como la etiqueta A, se podría recurrir a una expresión regular (ya que usted desea que el atributo href que se permita también). A pesar de ello desea tener cuidado con XSS; alguien ya recomienda AntiXSS.
Muestra Regexp para reemplazar las etiquetas A:
<a href="([^"]+)">
A continuación, reemplace como
<a href="$1">
Buena suerte!