PageDownと一緒に使用されている場合、MarkDownSharpの目的は何ですか?

StackOverflow https://stackoverflow.com//questions/9717403

質問

Stackexchangeサイトは、質問と回答を書くためのマークダウン構文を使用します。これは、 PageDown を使用して構築され、 markdownsharp Jeff'sサーバー側のHTMLサニータイザー。私は非常に似たものを自分で構築することを考えています。

サーバー側でHTMLをサニタイズする必要がある理由を理解しています。しかし、MarkDownSharpの目的は何ですか?クライアント側のPageDownを使用してMarkDownからHTMLへの翻訳を行い、それをサーバーに送信しないのはなぜでしょうか。

役に立ちましたか?

解決

最も重要な理由:

  1. スタック交換サイトの最も基本的な(「基本的な」)機能、尋ねて応答する、JavaScript なしでを作動させる。投票、フラグ、UI Niceties、ヘルプテキスト、お気に入り、グローバル受信箱、およびJavaScriptを必要としていますが、大丈夫です。しかし、サイトがQ&Aなしで生きていないことの一つのことは、摩擦をできるだけ低く保つためにその要件を持たないべきではありません。

    もちろん、JavaScriptが必要な場合は、クライアントがマークダウンをレンダリングする必要があります。

  2. レンダリングされたHTML版のPOSTの最新バージョンのみを保存します。過去の修正のために、マークダウンソースのみを保存します。旧バージョンはほとんど必要とされないので、行われるすべての編集の両方のバージョンを保存することは、巨大なスペースの無駄になるでしょう。しかし、が必要であることがある。改訂履歴で。そのため、とにかくサーバー側にレンダリングする必要があります。

  3. サーバー側を再度サニタイズしても、クライアントがレンダリングを行うことができるようにすると、レンダリングされたバージョンで実際に行われている信頼を明らかに削除します。以下を想像してみてください:

    I、邪悪なスパマー。次の回答を投稿してください:

    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
    
    .

    しかし、私は、リンクが実際にTurtleの並行性の複雑さの関連サイトに行くレンダリングされたバージョンを提出します。サーバーはMARSDOWNソースとレンダリングされたHTMLの両方を期待しているので、それはもう一方から行われたと信頼します。

    は、Sean Sceat、Logoタグだけで120kの評判を持つ有名なスタックオーバーフローユーザーです。彼は実際に関連するページに行く、答えが好きであることを見て、それを上向きにして、「偉大な答えを投稿してください。コメント、そして彼がそれにいる間に、彼はタイプミス「SEA」 - >「見る」(スパマーは故意に作った)を修正します。

    しかし、「編集」をクリックした後にエディタにあるマークダウンは、ではなく関連リンクを含みます。それはロレックスリンクを含んでいました。したがって - Seanへの知らないうちに - 彼はタイプミを修正しただけでなく、スパマーのサイトに行くためにリンクを変更しました。

    今すぐ、信頼できるユーザーからの最後の編集を持つ投稿を持っていて、答えを承認しているが、むしろクリックするとは思わないリンクで。

    とリビジョン履歴(ポイント2を参照)は、リンクが変更されたことをでさえないであろう。

  4. WMD JavaScriptエディタの元のバージョンは、実際に説明した機能を持っていました。レンダリングされたHTMLをサーバーに送信するように設定できます。私たちがそれを使ったことがないので、それを維持していたので、私たちがそれを維持したことがないので、私たちがその機能を「PageDown」という名前で発表したときにその機能を削除しました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top