10

プロジェクトで既存のRadEditorの代わりにWMDを使用することを検討しています。データの保存と取得の方法に関するいくつかの投稿を読んでいますが、先に進む前に、概念が正しいことを確認したいと思います。

私の研究が正しければ、これが私がすべきことです。

  1. エディターデータを2回保存する必要があります(1回はHTMLとして、もう1回はMarkdownとして)
  2. HTMLを保存する前に、ホワイトリストを実行する必要があります。
  3. 途中(表示する前)にAntiXSSを介してHTMLを実行する必要があります
  4. マークダウンデータは、編集のためにマークダウンを再設定するためにのみ使用する必要があります。

これが正しいかどうかを誰かが確認または拒否できますか?また、主題に関する有用な入力を追加できますか?

参考資料
コードの再フォーマット:Htmlのサニタイズ
StackOverflow:aspネットでwmdを使用して
マークダウンを保存する方法StackOverflow:データベースに保存する前またはantixssライブラリをレンダリングする前にhtmlをサニタイズする
StackOverflow:htmlエンティティをデータベースに保存するか、取得時に変換する

4

2 に答える 2

8

私は自分が書いているブログ エンジンに Markdown を実装しています (ブログ エンジンを書かない人がいるでしょうか?)。 また、クライアント向けに書いたカスタマイズされた CMS の多くにも Markdown を実装しています。

私はこれを、Stack Overflow チームのやり方と非常によく似ています。

  1. wmd.jsクライアント側のエディターとして使用します。
  2. MarkdownSharp サーバー側処理を使用します。
  3. HTML の処理については、 Jeff Atwood の Sanitize HTMLを使用します。

Markdown について説明しているリソースを次に示します。

結論:

  1. 投稿を送信された形式で保存します。MarkdownSharp を使用して表示されます。
  2. Jeff Atwood のアプローチ (入力ではなく出力) を使用して HTML をサニタイズします。
  3. ASP.NET MVC の「ベスト プラクティス」(非常に主観的な用語) を利用して、XSS と XSRF を処理します。
于 2010-06-22T12:11:40.267 に答える
0

したがって、Markdown の背後にあるアイデアの 1 つは、「安全な」html を生成することです。別のエンコーディングは必要ありません。

より一般的には、「生の」データを変換したりサニタイズしたりせずに、データベースに保存することをお勧めします。常にレンダリング ポイントのできるだけ近くでサニタイズまたは変換する必要があります。これにより、柔軟性が向上します (ああ、突然、RSS または JSON としてレンダリングする必要があります。くそー、HTML 用に事前にフォーマットされているため、できません)。サニタイザーまたはレンダラーが更新されると、すべてのデータに対する更新の効果が表示されます。

マークダウンテキストをデータベースに保存し、レンダリングしたいときに変換します。これにはマークダウンライブラリを使用します。理論的には、タグと属性の安全なリストからすべての安全な HTML を構築する必要があります。

于 2010-06-21T19:19:16.883 に答える