2010-07-28 1268 views
8

Tengo un requisito para que los usuarios creen, modifiquen y eliminen sus propios artículos. Planeo usar el editor de WMD que SO usa para crear los artículos.Markdown o HTML

Según lo que puedo reunir, SO almacena el descuento y el HTML. ¿Por qué hace esto? ¿Cuál es el beneficio?

No puedo decidir si almacenar el descuento, HTML o ambos. Si almaceno ambos, recupero y convierto para mostrar al usuario.

ACTUALIZACIÓN:

Ok, creo que a partir de las respuestas hasta el momento, que debería estar almacenando tanto la reducción del precio y HTML. Eso parece genial. También he estado leyendo una publicación de blog de Jeff sobre exploits de XSS. Debido a que el editor de WMD le permite ingresar cualquier HTML, esto podría causarme algunos dolores de cabeza.

La publicación del blog en cuestión es here. Supongo que tendré que seguir el mismo enfoque que SO - y desinfectar la entrada en el lado del servidor.

¿El código de sanitización que SO usa está disponible como de Código abierto o tendré que hacerlo desde cero?

Cualquier ayuda sería muy apreciada.

Gracias

Respuesta

8

Almacenar ambos es extremadamente útil/útil en términos de rendimiento y compatibilidad (y, finalmente, también control social).

Si almacena solo Markdown (o cualquier marca que no sea HTML), entonces hay un costo de rendimiento al analizarlo en formato HTML cada vez. Esto no siempre es notablemente barato.

Si almacena solo HTML, entonces correrá el riesgo de que los errores sigan silenciosamente en el código HTML generado. Esto llevaría a mucho dolor de cabeza de mantenimiento y corrección de errores. También perderás el control social porque ya no sabes lo que el usuario tiene actualmente completado. Por ejemplo, como administrador también te gustaría saber qué usuarios intentan hacer XSS usando <script> y más. Además, el usuario final no podrá editar los datos en formato de marcado. Necesitarías convertirlo de nuevo desde HTML.

Para actualizar el HTML en cada cambio de la versión de reducción, solo agrega un campo adicional que representa la versión de reducción que se utiliza para generar el resultado HTML. Siempre que esto haya cambiado en el lado del servidor en el momento en que recupera la fila, vuelva a analizar los datos usando la nueva versión y actualice la fila en el DB. Esto es solo un costo adicional de una sola vez.

+1

Otro riesgo de solo almacenar HTML es si necesita editar no necesita confiar en una conversión de 1 a 1 de HTML a la marca – neolaser

+0

@neo: * "Además, el usuario final no podrá para editar los datos en formato Markdown. Tendría que convertirlos de nuevo desde HTML. "* – BalusC

6

almacenando tanto que sólo tienen que procesar la reducción del precio una vez (cuando se remita). Luego recuperarías el HTML para que puedas cargar tus páginas más rápido.

0

Si solo almacenaba uno, siempre tendría que volver a crear el otro para la vista de visualización o la vista de edición.

Cuestiones relacionadas