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.

¿Fue útil?

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:

"&lt;strong&gt;" and "&lt;/strong&gt;" back to "<strong>" and "</strong>"
"&lt;em&gt;" and "&lt;/em&gt;" back to "<em>" and "</em>"
"&lt;li&gt;" and "&lt;/li&gt;" 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:

&lt;a href="([^"]+)"&gt;

A continuación, reemplace como

<a href="$1">

Buena suerte!

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