在SQL服务器中存储WMD输入/降价并在以后显示的最佳方法是什么?

时间:2010-06-20 22:35:40

标签: .net asp.net-mvc markdown antixsslibrary

我正在考虑在我的项目中使用WMD而不是现有的RadEditor。我一直在阅读一些关于如何存储和检索数据的帖子,我想在继续之前确保我的概念是正确的。

如果我的研究是正确的,这就是我应该做的事情。

  1. 我应该将编辑器数据存储两次(一次为HTML,一次为Markdown)
  2. 我应该在存储之前通过Whitelist运行HTML。
  3. 我应该在出路(显示之前)
  4. 之前通过AntiXSS运行HTML
  5. 我应该仅使用Markdown数据重新填充Markdown进行编辑。
  6. 任何人都可以确认或否认这是否正确,还可以在主题上添加任何有用的输入吗?

    参考
    Reformat my code: Sanitize Html
    StackOverflow: how do you store the markdown using wmd in asp net
    StackOverflow: sanitize html before storing in the db or before rendering antixss library
    StackOverflow: store html entities in database or convert when retrieved

2 个答案:

答案 0 :(得分:8)

我正在写一个博客引擎中的Markdown(谁不写博客引擎?),我也在我为客户编写的一些自定义CMS中实现了Markdown。

我的做法与Stack Overflow团队的工作方式类似:

  1. 我使用wmd.js作为客户端编辑。
  2. 我使用MarkdownSharp服务器端处理。
  3. 我使用Jeff Atwood's Sanitize HTML来处理HTML。
  4. 以下是一些谈论Markdown的资源:

    底线:

    1. 我以提交的形式存储帖子;它使用MarkdownSharp显示。
    2. 我使用Jeff Atwood的方法(On输出,而不是输入)清理HTML。
    3. 我利用ASP.NET MVC“最佳实践”(一个非常主观的术语)来处理XSS和XSRF。

答案 1 :(得分:0)

因此Markdown背后的一个理念是它会产生“安全”的HTML - 不需要单独的编码。

更一般地说,我建议将“原始”数据存储在数据库中,而不是对其进行转换或对其进行消毒。你应该总是尽可能地接近渲染点进行清理或转换 - 它提供了更大的灵活性(哦,突然我需要渲染为RSS。或JSON。该死的,我不能因为我预先格式化为HTML)而且,应该更新消毒剂或渲染器后,您会看到更新对每个数据的影响。

我想说将markdown文本存储在数据库中,然后在需要渲染时将其转换,使用markdown库,理论上应该从其安全的标记和属性列表中构建所有安全的HTML。 / p>