Tinymce 在 Django 中验证编辑器数据

Tinymce validate editor data in django

我正在使用 tinymce 作为 django 博客的编辑器。我得到的输出是从编辑器的 DOM 中提取的纯 html。同样的内容存储在数据库中,并在有人访问该页面时呈现。

这种方法虽然简单,但是会导致注入脚本标签。我想知道的是如何阻止它们,以便我保存的数据在编辑器中是有效的并且没有被篡改。 timymce 的代码是

tinymce.init({
  selector: 'div.editor',
  theme: 'inlite',
  plugins: 'image table link paste contextmenu textpattern autolink',
  insert_toolbar: 'quickimage quicktable',
  selection_toolbar: 'bold italic | quicklink h2 h3 blockquote',
  inline: true,
  paste_data_images: true,
  content_css: [
    '//www.tinymce.com/css/codepen.min.css'
  ]
});

并且在提交表单时我只是 post div.editor 下的内容。这是正确的方法还是有其他方法。另外,从安全的角度来看,我如何确定数据不包含脚本或任何其他类型的跟踪数据。

您可以使用 TinyMCE 中的 valid_elements / extended_valid_elements 配置选项来控制要允许的标签。这将帮助您确保 TinyMCE 只允许您想要的标签。

话虽如此,您永远不能假设客户端验证足以确保您的应用程序免受无效 HTML、注入攻击、XSS 等的侵害

现实情况是我可以使用其他工具(CURL 等)post 向应用程序发送数据,这样我就不会真正通过您的 UI。如果您错误地配置了 TinyMCE,您可能会在没有意识到的情况下允许使用标签。在将数据存储到数据库之前,您应该始终在服务器端验证数据 - 这是确保您保存的内容是 "safe" 的唯一方法。