Pregunta

Los sitios StacKexchange utilizan la sintaxis de Markdown para escribir preguntas y respuestas.Esto se basa con Pagedown en el lado del cliente y markdownsharp y jeff'sHtml desinfectante en el lado del servidor.Estoy pensando en construir algo muy similar a mí mismo.

Entiendo por qué necesito desinfectar el HTML en el lado del servidor.Pero, ¿cuál es el propósito de MarkdownSharp?¿Por qué no solo haría la traducción de Markdown a HTML con Pagedown en el lado del cliente y enviarlo al servidor?

¿Fue útil?

Solución

las razones más importantes:

  1. Queremos la funcionalidad más básica (en el sentido de "fundamental") de los sitios de intercambio de pila, preguntando y respondiendo, trabajemos sin JavaScript . Las cosas más avanzadas, como la votación, la bandera, los suicidad de la interfaz de usuario, los textos de ayuda, el favorito, la bandeja de entrada global y el que no requieren JavaScript, y eso está bien. Pero lo único que los sitios no pueden vivir sin: Preguntas y respuestas, no deben tener ese requisito, para mantener la fricción lo más baja posible.

    Por supuesto, cuando no tiene JavaScript como un requisito, no puede exigir que el cliente rinda el método.

  2. Solo almacenamos la versión HTML renderizada de la versión más reciente de una publicación. Para las revisiones anteriores, solo almacenamos la fuente de descenso. Almacenar ambas versiones para cada edición que se hace sería una enorme pérdida de espacio, ya que las versiones anteriores casi nunca se necesitan. Pero a veces se necesitan, por ejemplo. En la historia de la revisión. Por eso, tenemos que rendirnos en el lado del servidor de todos modos.

  3. Incluso si se vuelve a desinfectar en el lado del servidor, lo que permite al cliente hacer la representación, obviamente, elimina la confianza que puede tener en la versión renderizada que realmente se está realizando desde el método de descuento. Imagina lo siguiente:

    i, un spammer malvado, publica la siguiente respuesta:

    As you can sea on [this awesome site][1],
    
    ... (long text on thread-safe usage of the turtle in LOGO) ...
    
    Hope that helps!
    
     [1]: http://almost-real-rolex-watches.biz
    

    Pero envío una versión renderizada en la que el enlace realmente va a un sitio relevante en las complejidades de la concurrencia de tortugas. Dado que el servidor espera tanto la fuente de marcado como el HTML renderizado de mí, confía en que se hizo de la otra.

    A lo largo viene un usuario de desbordamiento de la pila de renombre con una reputación de 120k solo en la etiqueta del logotipo. Él ve que el enlace, de hecho, va a una página relevante, le gusta la respuesta, lo presenta, publica una "gran respuesta; ¡el sitio que vincula con toneladas de contenido útil!" Comentario, y mientras lo está en él, Él arregla el error tipográfico "Sea" -> "Ver" (que el spammer hizo deliberadamente).

    Pero la descuento que estuvo en el editor después de que hizo clic en "Editar", ya no contiene el enlace correspondiente; Contenía el enlace Rolex. Y así, sin saberlo a Sean, no solo solucionó el error tipográfico, sino que también cambió el enlace para ir al sitio del Spammer.

    Ahora tiene una publicación con la última edición que viene de un usuario de confianza, respaldando la respuesta, pero con un enlace que preferiríamos no tener personas haciendo clic.

    y el historial de revisiones (ver punto 2.), ni siquiera lo mostraría que se cambió el enlace.

  4. Se debe tener en cuenta que la versión original del Editor de JavaScript de WMD en realidad tuvo la funcionalidad que describe; Puede configurarlo para enviar el HTML Renderizado al servidor. Finalmente, eliminamos esa funcionalidad cuando publicamos nuestra versión refactorizada con el nombre "Pagedown", ya que nunca lo habíamos usado, lo mantuvimos, y honestamente no sé si realmente funcionó más.

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