Question

Les sites Stackexchange utilisent la syntaxe de marquage pour la rédaction de questions et réponses.Ceci est construit en utilisant pagedown sur le côté client et markdownshaarp et Jeff'sHTML Sanitizer sur le côté serveur.Je pense à construire quelque chose de très similaire moi-même.

Je comprends pourquoi j'ai besoin de désinfecter le HTML du côté serveur.Mais quel est le but de markdownshaarp?Pourquoi ne ferais-je pas juste la traduction de Markdown à HTML avec un pagedown du côté du client et envoyez-le sur le serveur?

Était-ce utile?

La solution

Les raisons les plus importantes:

  1. Nous voulons la fonctionnalité la plus fondamentale (au sens de «fondamental») des sites d'échange de pile, demandez-vous et répondez, au travail sans JavaScript . Des trucs les plus avancés comme le vote, le signal de signalisation, des banques d'assurance-chômage, des textes d'aide, la favorite, la boîte de réception globale et ne nécessitent pas JavaScript, et c'est bon. Mais la seule chose que les sites ne peuvent pas vivre - Q & A - ne devraient pas avoir cette exigence, pour garder le frottement aussi bas que possible.

    Bien sûr, lorsque vous n'avez pas de JavaScript comme une exigence, vous ne pouvez pas exiger que le client rend le marquage.

  2. Nous stockons uniquement la version HTML rendue de la version la plus récente d'un post. Pour les révisions passées, nous ne stockons que la source de marquage. Stocker les deux versions pour chaque édition qui est fabriquée serait une énorme gaspillage d'espace, car les anciennes versions sont pratiquement jamais nécessaires. Mais parfois ils sont nécessaires, par exemple dans l'historique de révision. Donc, pour cela, nous devons faire du côté du serveur de toute façon.

  3. Même si vous réinsercipriez sur le côté serveur, permettant au client de faire le rendu qui supprime évidemment la confiance que vous pouvez avoir dans la version rendue réellement faite à partir du marquage. Imaginez ce qui suit:

    I, un spammer maléfique, postez la réponse suivante:

    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
    

    Mais je soumets une version rendue dans laquelle le lien entre en réalité sur un site pertinent sur les complexités de la concurrence de la tortue. Puisque le serveur s'attend à la fois à la source de marquage et au HTML rendu de moi, il fait confiance à ce que celui-ci a été fabriqué à partir de l'autre.

    Le long de l'épreuve d'auriculaire Sean, un utilisateur de débordement de pile de renom avec une réputation de 120 000 dans la seule étiquette de logo. Il voit que le lien passe en effet à une page pertinente, aime la réponse, la vaut-il, publie une "bonne réponse; le site que vous liez a des tonnes de contenu utile!" Commentaire, et pendant qu'il y est, il corrige la typo "mer" -> "Voir" (que le spammeur a été délibérément).

    Mais le marquage qui était dans l'éditeur après avoir cliqué sur "Modifier" les pas contient plus le lien correspondant; Il contenait la liaison Rolex. Et ainsi - à l'insu de Sean - il n'a pas seulement corrigé la faute de frappe, mais également modifié le lien pour accéder au site du spammer.

    Vous avez maintenant un message avec la dernière modification provenant d'un utilisateur de confiance, approuvant la réponse, mais avec un lien que nous préférerions ne pas avoir de gens en cliquant.

    et l'historique de révision (voir point 2.), ne serait même pas show que le lien a été modifié.

  4. Il convient de noter que la version originale de l'éditeur JavaScript WMD avait réellement la fonctionnalité que vous décrivez; Vous pouvez le configurer pour soumettre le HTML rendu au serveur. Nous avons finalement supprimé cette fonctionnalité lorsque nous avons publié notre version refouturée sous le nom "Pagedown", puisque nous ne l'avions jamais utilisée, la maintenue, et je ne sais honnêtement pas s'il a effectivement fonctionné.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top