2010-05-06 14 views
5

Estoy tratando de encontrar maneras de desinfectar la entrada del editor WMD.WMD editor sanitizing

Específicamente, intento que las etiquetas HTML solo estén disponibles en las etiquetas <code> que genera WMD. Es posible

Mi problema es que el siguiente código se representa como HTML, que es vunerable al potencial XSS attacks.

Por ejemplo, <a onmouseover="alert(1)" href="#">read this!</a>

El código anterior renders normalmente tanto en el modo de vista previa y cuando se guardan en la base de datos.

Me di cuenta de que Stack Overflow no parece tener este problema. El mismo código simplemente se representa como texto.

Me di cuenta de que el equipo de Stack Overflow ha compartido su código en http://refactormycode.com/codes/333-sanitize-html. ¿Realmente tengo que usar C# para desinfectar WMD para hacer esto?

+1

nadie puede responder mi pregunta? nadie hizo esto antes? –

Respuesta

1

Si desea bloquear las secuencias de comandos defectuosos de WMD en el lado del cliente, eche un vistazo a mi respuesta aquí: Align the WMD editor's preview HTML with server-side HTML validation (e.g. no embedded JavaScript code).

Muestra cómo implementar una lista blanca del lado del cliente en el editor de WMD para restringir el HTML del panel de vista previa de WMD a elementos HTML conocidos y atributos de HTML conocidos. Realiza la validación después de WMD genera su HTML, por lo que incluso si hay un error en la generación de HTML del editor de WMD que permite que se ejecute un script incorrecto, el bloqueador de la lista blanca lo detectará. Este código se basa en la implementación de la misma validación de StackOverflow.com.

Dicho esto, también necesita la validación del lado del servidor (si está utilizando PHP, HTML Purifier es una buena opción), porque incluso si arregla el cliente, eso no evita que un atacante simule un navegador y guardando el descuento malicioso POST-ing en tu servidor. Por lo tanto, no es necesario realizar la validación del visualizador WMD en el lado del cliente, excepto para defenderse contra un caso oscuro en el que un atacante consigue obtener un descuento en el servidor y convence a un moderador de sitio para que edite la página. En ese caso, la validación del previsor de WMD del cliente podría evitar que un atacante se apodere de todo el sitio.

Además, hacer la validación del lado del cliente puede ser útil porque entonces usted sabe que las mismas etiquetas y HTML permitidos por el cliente también se permitirán en el servidor. Asegúrese de sincronizar la lista blanca del lado del servidor con la lista blanca del cliente. La lista blanca de StackOverflow es here si quiere un ejemplo.