Domanda

I siti Stackexchange utilizzano la sintassi di markdown per la scrittura di domande e risposte.Questo è costruito usando pagadaggio sul lato client e MarkDownSharp e Jeff'sSanitizer HTML sul lato server.Sto pensando di costruire qualcosa di simile molto simile.

Capisco perché ho bisogno di igienizzare l'HTML sul lato server.Ma qual è lo scopo del markdownsharp?Perché non dovrei solo fare la traduzione da Markdown a HTML con Pagadaggio sul lato client e inviarlo al server?

È stato utile?

Soluzione

Le ragioni più importanti:

    .
  1. Vogliamo il più fondamentale (nel senso della funzionalità "fondamentale") dei siti di scambio dello stack, chiedendo e rispondendo, per funzionare senza JavaScript . La maggior parte delle cose avanzate come il voto, la segnalazione, l'interfacciata ui, aiuta i testi, il favoriting, la posta in arrivo globale e che necessitano di JavaScript, e va bene. Ma l'unica cosa che i siti non possono vivere senza - Q & A - non dovrebbero avere quel requisito, per mantenere il frizione il più basso possibile.

    Certo, quando non hai JavaScript come requisito, non è possibile richiedere che il client renda il markdown.

  2. memorizziamo solo la versione HTML resa della versione più recente di un post. Per le revisioni passate, memorizziamo solo la sorgente Markdown. Memorizzazione di entrambe le versioni per ogni modifica che viene effettuata sarebbe un enorme spreco di spazio, poiché le vecchie versioni non sono quasi mai necessarie. Ma a volte sono necessari, ad es. nella storia della revisione. Quindi, per questo, dobbiamo comunque rendering sul lato server.

  3. Anche se si riutilizzano sul lato server, consentendo al client di fare il rendering ovviamente rimuove la fiducia che è possibile avere nella versione renderizzata effettivamente fatta dal markdown. Immagina quanto segue:

    I, un spammer malvagio, pubblica la seguente risposta:

    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
    
    .

    Ma inviare una versione resa in cui il collegamento va in realtà in un sito rilevante sulle complessità della concorrenza della tartaruga. Poiché il server si aspetta sia la sorgente Markdown che l'HTML reso da parte mia, si fida che quello è stato fatto dall'altro.

    Lungo arriva SAAN SCATE, rinomato Utente da overflow stack con la reputazione di 120K nel tag del logo da solo. Vede che il link vada davvero in una pagina pertinente, piace la risposta, lo svetta, pubblica una "grande risposta, il sito che colleghi ha tonnellate di contenuti utili!" Commento, e mentre è in esso, risolve il tipo di battitura "mare" -> "Vedi" (che lo spammer ha reso deliberatamente).

    Ma il markdown che era nell'editor dopo aver fatto clic su "Modifica" ha fatto non contiene più il collegamento pertinente; Conteneva il link Rolex. E quindi - sconosciuto a Sean - non solo ha risolto il tipo di battitura, ma ha anche cambiato il link per andare al sito dello spammer.

    Ora hai un post con l'ultima modifica proveniente da un utente fidato, approvando la risposta, ma con un link che preferiremmo non avere persone facendo clic.

    E la cronologia delle revisioni (vedere il punto 2.), non sarebbe nemmeno mostra che il collegamento è stato modificato.

  4. Va notato che la versione originale dell'Editor JavaScript WMD ha effettivamente la funzionalità che descrivi; Puoi impostarlo per inviare l'HTML reso al server. Alla fine abbiamo rimosso quella funzionalità quando abbiamo pubblicato la nostra versione refactolata sotto il nome "Pagadaggio", dal momento che non l'avevamo mai usata, mantenevalo, e onestamente non so se ha effettivamente lavorato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top