MarkDownSharpが私のHTMLをエンコードしないのはなぜですか?
-
27-10-2019 - |
質問
私の考えでは、Markdownのより大きな目標の1つは、ユーザーが潜在的に奇形のHTMLを直接入力できないようにすることです。
まあ、それはMarkdownsharpで私にとって正確に機能していません。
この例は、「ABC」の直後に追加のラインブレイクがある場合に適切に機能します...
しかし、そのラインブレイクがそこにないとき、私はそれがまだhtmlencodedされるべきだと思いますが、それはここで起こっていません...
舞台裏では、レンダリングされたマークアップはIFrameから来ています。そして、これはその背後にあるコードです...
<%
var md = new MarkdownSharp.Markdown();
%>
<%= md.Transform(Request.Form[0]) %>
確かに私は何かが足りないに違いありません。ああ、私はv1.13を使用しています(この執筆時点での最新バージョン)。
編集(これはStackoverFlowの実装のテストです)
ABC
これは赤ではないはずです解決 2
Stackoverflowの実装には、テストと把握に時間がかかる可能性のあるかなりの数のカスタマイズが含まれていることが明らかになったため、別の方向に進むことにしました。
Markdownのサブセットである独自の単純化されたマークアップ言語を作成しました。オープンソースプロジェクトは次のとおりです http://ultralight.codeplex.com/ そして、あなたはで働く例を見ることができます http://www.bucketsoft.com/ultralight/
このプロジェクトは、JavaScriptエディターを備えた完全なASP.NET MVCソリューションです。また、MarkDownSharpとは異なり、SAFE HTMLが保証されています。 JavaScriptパーサーは、クライアント側とサーバー側の両方で使用され、一貫したマークアップを保証します(特別なおかげで Jurassic JavaScriptコンパイラ)。そのパーサーに1つのコードベースを維持するだけで、それは美しいことです。
このプロジェクトはまだベータ版ですが、私はすでに自分のサイトでそれを使用していますが、これまでのところうまく機能しているようです。
他のヒント
Steve Worthamのカスタマイズされたソリューションを使用したくない場合は、Markdownsharpの人に問題と提案された修正を提出しました。 http://code.google.com/p/markdownsharp/issues/detail?id=43
添付のmarkdown.csファイルをダウンロードすると、設定できる新しいオプションが見つかります。 MarkDownSharpがコードブロック内のテキストの再エンコードを停止します。
HTMLが入力をエンコードする前に、それをマークダウンに渡すことを忘れないでください。
別の解決策は、スタックオーバーフローのようなホワイトリストHTMLタグに対するものです。コンテンツをマークダウンに渡した後、これを行います。
詳細については、これを参照してください。 http://www.codetunnel.com/blog/post/24/mardownsharp-and-encoded-html
多分私は理解していませんか?マークダウンで新しいコードブロックを開始している場合、そのすべての品種で、 ダブル ラインブレイクと4スペースのインデント - 単一の新しいラインは、私が渡さなければならないレンダラーのいずれでも行いません。
abc -- Here comes a code block:
<div style="background-color: red"> This is code</div>
譲歩:
ABC-ここにコードブロックがあります:
<div style="background-color: red"> This is code</div>
あなたが言っていることから、Markdownsharpはこのルールで問題なくなっているように思われます。
abc -- Here comes a code block:
<div style="background-color: red"> This should be code</div>
コードブロックではなく、混乱が発生します。
ABC-ここにコードブロックがあります:これはコードである必要があります
Stackoverflowが剥ぎ取っていると思います <div>
タグ、彼らはコメントには部門やそのようなものがあるべきではないと考えているからです。 (?)(一般的に、彼らは他の多くの処理をしなければなりません。
編集: 人々はマークダウンの実装の間違ったことを期待していると思います。たとえば、以下で言うように、 「無効なマークダウン」のようなものはありません. 。プログラミング言語ではなく、そのようなものではありません。コマンドラインから利用できる3つのマークダウン実装すべてが、ランダムな.jsおよび.cファイル、または他の賢明なマークダウンに挿入されたファイル、およびzipファイルやその他のナンセンスを挿入して有効なhtmlに挿入されたファイルに無関心に「変換」していることを確認しました。ブラウザはまったく表示することを気にしません - 鶏の傷はありますが。たとえば、Wikiプログラムで何かを除外したい場合は、もちろん、ほとんどのMarkdown-Employing Wikiプログラムがそうであるように、さらに何かをします。