Pergunta

Por que eu preciso de um Markdown com um editor de edição frontal como WMD? O que o Markdown faz com o conteúdo enviado do editor WMD?
Como o Markdown armazena o conteúdo no back -end? É da mesma maneira que *bold* Ou em algum outro formato? Por que não posso simplesmente fazer um Encode HTML?

Desculpe se eu parecia muito ingênuo.

Foi útil?

Solução

Provavelmente é útil dar um passo atrás e fazer algumas das perguntas maiores. O problema está tentando resolver é o de edição rica no navegador. Considere o seguinte: em algum momento, para qualquer software para ativar o texto rico, ele deve descrever a riqueza de alguma maneira, mas isso pode ser.

Poderíamos chamar essa descrição da riqueza (por descrição da riqueza, quero dizer como "esse pedaço de texto é ousado" ou "esse pedaço de texto é um hiperlink), poderíamos chamar essa descrição da riqueza de" marcação " - ela marca o texto com meta "riqueza".

As implementações do texto rico podem adotar duas abordagens, a.) Hide a marcação do usuário ou b.) Deixe -os ter acesso à marcação.

Para aqueles que optam por escondê -lo, o resultado final é muitas vezes Wysiwyg. O usuário está alheio ao que está acontecendo nos bastidores. O editor cuida dos detalhes. Pense no MS Word como um exemplo. Ninguém manipula o formato de marcação de palavras como um usuário final regular.

Para implementações que optam por expor a marcação, um idioma de marcação é então para permitir que os usuários entrem com ele. Tais idiomas de marcação seriam coisas como html fazendo <tag> ou código BB, por exemplo, fazer coisas como [tag].

Markdown é um desses idiomas.

Ao contrário dos tipos anteriores que mencionei, o Markdown tentou se projetar para que a marcação torne o povo ASCII comum já o use. Por exemplo, é comum que as pessoas asterisem seu texto para desencadeá -lo, *important*, e essa notação em Markdown é um indicador de itálico.

Em relação ao armazenamento, como Stephan apontou, o sistema provavelmente armazenará a remarca bruta, porque o usuário provavelmente precisará ter a possibilidade de edição, e o markdown original pode ser recuperado para esse fim.

Na maioria dos sistemas que construí, armazenei o Markdown e o normalizo para um segundo campo que armazena em cache a renderização HTML do Markdown. Dessa forma, não tenho que fazer o Markdown-> renderização em HTML para todos os campos de marcação. É preciso um pouco mais de espaço, mas eu prefiro que o usuário tenha uma resposta mais rápida do que usar menos espaço de armazenamento de dB.

Também deve ser tomado cuidado ao aceitar o Markdown do navegador, pois pode conter facilmente <script> Tags que precisam ser filtradas. A maioria das implementações de marcação também reconhecerá o HTML misturado com a formatação de remarca, pois, para ser seguro, você precisa garantir que suas entradas e caches sejam higienizados corretamente.

Outras dicas

diagram

      

O motivo para usar um sistema de codificação alternativo diferente de HTML é para segurança

Markdown e outros sistemas de codificação de estilo wiki geralmente não suportam linguagens de script

HTML suporta linguagens de script de várias maneiras (

Os dois principais problemas de segurança são:

  1. Os criminosos de malware usam scripts em conteúdo gerado pelo usuário para tentar ações de malware no computador leitores de conteúdo, com scripts para acessar orifícios de segurança conhecidos

  2. Carregadores gratuitos usando scripts para subverter o restante do site alterando o quadro ou estilos de conteúdo, ou seja, anúncios, menus, logotipos etc. Isso também pode ser um comportamento criminal, se não apenas irritante

Ao usar uma linguagem intermediária, como o Markdown, você tem controle total na saída renderizada

A filtragem de HTML é possível, mas também é complexa e arriscada

A outra razão significativa para um sistema de codificação alternativo é a aplicação do estilo. O HTML normal tem muitas opções. Ao limitar as opções disponíveis, os usuários só podem usar certos estilos. O geralmente contribui para o conteúdo mais limpo e mais legível (compare o eBay)

A principal razão para usar o Markdown é a legibilidade de um texto marcado. Por exemplo, você pode enviá-lo com um email de texto simples e o leitor ainda entenderá o enfiase, as balas, o texto será dividido nos parágrafos etc.

Quando você pergunta sobre o armazenamento de dados, depende. Se você ativar o Markdown no mecanismo do blog WordPress, ele armazena dados como o usuário o inseriu - no Markdown. No transbordamento da pilha, no entanto, parece que os dados são armazenados como HTML. Pelo menos, os "dumps de dados de transbordamento de pilha" contêm html, não markdown (eu vi pessoas reclamando) que eles precisam convertê -lo de volta).

Se você usar o editor WMD, poderá mostrar ao usuário como as saídas serão depois de serem convertidas em HTML. Mesmo que a sintaxe Markdown é Realmente simples, não é difícil cometer erros. Portanto, é melhor mostrar aos usuários a saída.

Outro motivo para usar o Markdown em vez de um controle Wysiwig - um controle Wysiwig permite que o usuário use o HTML nos dados que você está exibindo na sua página da web. Então, você tem que ser quem decide quando há simplesmente HTML incorreto e quando é um mal XSS/CSRF/qualquer injeção. Em Markdown, você simplesmente converte * algo * para <b>something</b>, remova todos os elementos HTML desconhecidos e pronto.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top