Question

Pourquoi ai-je besoin d'un Markdown avec un éditeur d'édition avant comme ADM ? Qu'est-ce que le démarquage faire pour le contenu qui est envoyé par l'éditeur ADM?
Comment Markdown stocker le contenu dans le back-end? Est-ce la même façon que *bold* ou dans un autre format? Pourquoi ne puis-je faire juste un html encode ?

Désolé si je sonne très naïve.

Était-ce utile?

La solution

Il est probablement utile de faire un pas en arrière et poser quelques-unes des grandes questions. La question Markdown tente de résoudre est celui de l'édition riche dans le navigateur. Considérez ceci:. À un certain moment, pour tout morceau de logiciel pour permettre le texte riche, il doit décrire la richesse d'une certaine manière, mais qui peut être

Nous pourrions appeler cette description de la richesse (par une description de la richesse que je veux dire comme « ce morceau de texte est en gras » ou « ce morceau de texte est un lien hypertexte), nous pourrions appeler cette description de la richesse « balisage » - il marque le texte avec méta « richesse ».

Implémentations de texte riche peut prendre deux approches, que ce soit un.) Cacher le balisage de l'utilisateur ou b.) Leur laisser l'accès au balisage.

Pour ceux qui choisissent de le cacher, le résultat final est très souvent WYSIWYG. L'utilisateur est inconscient de ce qui se passe dans les coulisses. L'éditeur prend soin des détails. Pensez MS Word comme un exemple. Personne ne manipule le format de balisage Word en tant que utilisateur final régulier.

Pour les implémentations qui choisissent d'exposer le balisage, un langage de balisage est alors afin de permettre aux utilisateurs de interacat avec elle. Ces langages de balisage seraient des choses comme HTML faisant <tag> ou un code BB par exemple, faire des choses comme [tag].

Markdown est une telle de ces langues.

Contrairement aux anciens types je l'ai mentionné, Markdown a tenté de se concevoir de telle sorte que le balisage rend les gens ASCII communs utilisent déjà. Par exemple, il est fréquent que les gens Asterisk leur texte pour le mettre hors tension, *important*, et cette notation dans Markdown est un indicateur de l'italique.

En ce qui concerne le stockage, comme Stephan a souligné, le système le plus stocker probablement la démarquage première, parce que l'utilisateur sera très probablement besoin d'avoir la possibilité d'éditer et le démarquage original peut être rappelé à cet effet.

Dans la plupart des systèmes que je l'ai construit, je stocke le démarquage, puis normalisent à un 2ème champ qui met en cache le rendu HTML du démarquage. De cette façon, je ne dois pas faire markdown-> HTML rendu pour chaque champ de démarquage. Il faut un peu plus d'espace, mais je préfère l'utilisateur une réponse plus rapide que d'utiliser moins d'espace de stockage de DB.

Des précautions doivent également être prises lors de l'acceptation Markdown du navigateur, car il peut facilement contenir des balises <script> qui doivent être filtrés. La plupart des implémentations de démarques reconnaîtront également HTML entremêlés avec le formatage Markdown, comme pour ainsi être en sécurité, vous devez vous assurer que vos entrées et les caches sont désinfectées correctement.

Autres conseils

La raison de l'utilisation d'un système de codage alternatif autre que HTML est pour la sécurité

Markdown et d'autres systèmes de codage tels de style wiki ne supportent généralement pas les langages de script

HTML prend en charge les langages de script de plusieurs façons (

Les deux principaux problèmes de sécurité sont:

  1. criminels malveillants utiliser des scripts dans le contenu généré par l'utilisateur pour tenter des actions des logiciels malveillants sur les lecteurs de contenu par ordinateur scripts à des failles de sécurité connues d'accès

  2. Free Loaders en utilisant des scripts pour subvertir le reste du site en changeant le cadre ou styles contenu à savoir des annonces, son menu, logos, etc. Cela peut aussi être un comportement criminel sinon tout simplement ennuyeux

En utilisant un langage intermédiaire tel que Markdown vous avez le contrôle total sur la sortie rendu

Le filtrage HTML est possible, mais est aussi complexe et risqué

L'autre raison importante pour un système de codage alternatif est l'application du style. HTML normale a trop d'options. En limitant les options disponibles, les utilisateurs ne peuvent utiliser que certains styles. Le fait habituellement pour la recherche plus propre et le contenu plus lisible (comparer SO à Ebay)

La principale raison d'utiliser Markdown est la lisibilité d'un texte marqué. Par exemple, vous pouvez l'envoyer dans un email texte brut et le lecteur comprend toujours les emphiasis, des balles, le texte sera divisé en paragraphes et cetera.

Lorsque vous posez des questions sur le stockage des données, cela dépend. Si vous activez Markdown dans le moteur de blog WordPress, il stocke les données que l'utilisateur a l'entrée - dans Markdown. Dans le débordement de pile, cependant, il semble que les données sont stockées au format HTML. Au moins, la « pile de données de débordement des décharges » contiennent HTML, pas Markdown (je l'ai vu personnes qui se plaignent ) qu'ils doivent reconvertir).

Si vous utilisez l'éditeur d'ADM, vous pouvez montrer à l'utilisateur comment les sorties ressembleront après avoir été converti en HTML. Même si la syntaxe Markdown est très simple, il est difficile de ne pas faire des erreurs. Il est donc préférable de montrer la sortie.

Une autre raison d'utiliser Markdown au lieu d'un contrôle WYSIWYG - un contrôle WYSIWYG permet à l'utilisateur d'utiliser HTML dans les données que vous affichez sur votre page Web. Donc, vous devez être celui qui décide quand il est tout simplement incorrect HTML et quand XSS / CSRF / whatever injection. En Markdown, il vous suffit de convertir * quelque chose * à <b>something</b>, supprimer tous les éléments HTML et Unknow vous avez terminé.

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