ruby-on-rails - 在 Rails 中清理 Markdown?

标签 ruby-on-rails xss markdown sanitization

用户可以在我的应用程序中编辑“文章”。每篇文章都在数据库中掌握并作为 Markdown 发送到客户端——我使用 Javascript 将其转换为 HTML 客户端。

我这样做是为了当用户想要编辑文章时,他可以编辑 Markdown 并将其发布回服务器(因为它已经在页面上)。

我的问题是如何清理我发送给客户端的 Markdown——我可以只使用 Rails 的 sanitize helper ?

另外,对这种方法有什么想法吗?我想到的另一个策略是在服务器上渲染和清理 HTML,只有在用户想要编辑文章时才将 Markdown 拉到客户端。

最佳答案

我遵循几个原则:

  • 存储用户输入的内容
  • sanitizer 陈列
  • 只发送必要的数据

  • 这使我想到了您建议的替代架构:
  • 在数据库中存储 Markdown
  • 渲染, Markdown /清理,并将 HTML 发送到浏览器
  • 当(并且如果)用户选择“编辑”时,通过 AJAX 从服务器请求原始 Markdown
  • 如果我在编辑期间有一个“预览” View ,我也会尝试使用服务器来呈现它(尽管如果它太慢,您可能需要删除这一步)。但是,在预览期间, sanitizer 可能不是那么重要。

  • 这是我的方法,而且效果非常好。

    关于ruby-on-rails - 在 Rails 中清理 Markdown?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1384807/

    相关文章:

    ruby-on-rails - 如何创建和管理用户?

    php - 您只在输出上运行 htmlspecialchars() 还是您还执行其他功能?

    python - 未安装 Markdown 库/urllib ImportError

    webpack - 如何在 ES6 中导入 SimpleMDE

    ruby-on-rails - 使用 Rails/Spork/TestUnit 运行所有测试

    ruby-on-rails - 如何将从 rails 中的 date_select 返回的哈希值转换为 Date 对象?

    php - 使用 PHP 将字符串插入 MySQL 表和 HTML 页面的安全性

    php - 如果我正在使用 HTMLPurifier,我还需要使用 htmlentities 吗?

    python - Jupyter Notebook 纵向显示图像

    javascript - 如果另一个类存在 jquery/rails,则有条件地应用一个 css 类