WMDのようなフロント編集エディターを備えたMarkdownが必要なのはなぜですか? マークダウンは、WMD エディターから送信されたコンテンツに対して何をしますか?
Markdown はコンテンツをバックエンドにどのように保存しますか? それは同じように、または他の形式ですか?html エンコードを実行できないのはなぜですか? *bold*
私が非常にナイーブに聞こえたら申し訳ありません。
一歩下がって、いくつかのより大きな質問をすることはおそらく役に立ちます。Markdown が解決しようとしている問題は、ブラウザーでのリッチ編集の問題です。これを考慮してください: ある時点で、ソフトウェアがリッチ テキストを有効にするには、何らかの方法でリッチ テキストを記述しなければなりませんが、それは可能です。
その豊かさの説明を呼び出すことができます (豊かさの説明とは、「このテキストは太字です」または「このテキストはハイパーリンクです」などの意味です)、その豊かさの説明を「マークアップ」と呼ぶことができます。メタ「リッチ」なテキスト。
リッチ テキストの実装には、a.) ユーザーからマークアップを非表示にするか、b.) ユーザーがマークアップにアクセスできるようにするかの 2 つの方法があります。
非表示にすることを選択した場合、最終結果は WYSIWYG になることがよくあります。ユーザーは、舞台裏で何が起こっているかを知りません。編集者は詳細を処理します。MS Word を例に考えてみましょう。通常のエンド ユーザーとして Word マークアップ形式を操作する人はいません。
マークアップを公開することを選択した実装の場合、マークアップ言語は、ユーザーがそれを操作できるようにするためのものです。<tag>
そのようなマークアップ言語は、たとえばHTMLや BB コードのようなもので、 [tag]
.
Markdown は、これらの言語の 1 つです。
私が言及した以前のタイプとは対照的に、Markdown は、マークアップが人々が既に使用している一般的な ASCII をレンダリングするように設計しようとしました。たとえば、テキストにアスタリスクを付けて強調することは一般的で*important*
あり、マークダウンでのこの表記はイタリック体の指標です。
保存に関しては、ステファンが指摘したように、システムは生のマークダウンを保存する可能性が最も高く、ユーザーは編集の可能性を必要とする可能性が高く、その目的のために元のマークダウンを呼び出すことができるからです。
私が構築したほとんどのシステムでは、マークダウンを保存してから、マークダウンの HTML レンダリングをキャッシュする 2 番目のフィールドに正規化します。このようにして、すべてのマークダウン フィールドに対してマークダウン -> HTML レンダリングを行う必要はありません。少し多くのスペースが必要ですが、DB ストレージスペースを少なくするよりも、ユーザーの応答が速い方がよいと思います。
<script>
フィルターで除外する必要があるタグが簡単に含まれる可能性があるため、ブラウザーから Markdown を受け入れる場合も注意が必要です。ほとんどのマークダウン実装は、Markdown フォーマットが混在する HTML も認識します。安全のためには、入力とキャッシュが適切にサニタイズされていることを確認する必要があります。
HTML 以外の代替エンコーディング システムを使用する理由は、セキュリティのためです。
Markdown やその他のウィキ スタイルのエンコーディング システムは、通常、スクリプト言語をサポートしていません。
HTML は多くの方法でスクリプト言語をサポートします (
主なセキュリティ上の問題は次の 2 つです。
マルウェア犯罪者は、ユーザーが生成したコンテンツでスクリプトを使用して、既知のセキュリティ ホールにアクセスするスクリプトを作成することにより、コンテンツ リーダーのコンピューターでマルウェア アクションを試みます。
広告、メニュー、ロゴなどのコンテンツ フレームやスタイルを変更することで、スクリプトを使用してサイトの残りの部分を破壊する無料のローダー。
Markdown などの中間言語を使用することで、レンダリングされた出力を完全に制御できます
HTML のフィルタリングは可能ですが、複雑で危険です
代替エンコーディング システムのもう 1 つの重要な理由は、スタイルの強制です。通常の HTML にはオプションが多すぎます。利用可能なオプションを制限することにより、ユーザーは特定のスタイルのみを使用できます。通常、見た目がすっきりし、コンテンツが読みやすくなります (SO と Ebay を比較してください)。
Markdown を使用する主な理由は、マークされたテキストの読みやすさです。たとえば、プレーンテキストのメールで送信しても、読者は強調、箇条書き、テキストが段落などに分割されることを理解できます。
データの保存について尋ねると、状況によって異なります。WordPress ブログ エンジンで Markdown を有効にすると、ユーザーが入力したデータが Markdown に保存されます。ただし、スタック オーバーフローでは、データが HTML として保存されているようです。少なくとも、「スタック オーバーフロー データ ダンプ」には HTML が含まれており、Markdown は含まれていません (元に戻す必要があると不満を言う人を見たことがあります)。
WMD エディターを使用すると、HTML に変換された後の出力がどのように見えるかをユーザーに示すことができます。Markdown の構文は非常に単純ですが、間違いを犯すことは難しくありません。したがって、ユーザーに出力を表示するのが最善です。
WYSIWIG コントロールの代わりに Markdown を使用するもう 1 つの理由 - WYSIWIG コントロールを使用すると、ユーザーは Web ページに表示するデータで HTML を使用できます。したがって、単純に間違った HTML がある場合と、それが邪悪なXSS / CSRF /その他のインジェクションである場合を判断するのは、あなた自身でなければなりません。Markdown では、*something* を に変換し<b>something</b>
、不明な HTML 要素を削除するだけで完了です。