Tinymce验证django中的编辑器数据

时间:2016-08-12 19:04:15

标签: html django security tinymce

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

这种方法虽然简单但可以导致脚本标签注入相同。我想知道的是我如何防止它们,以便我保存的数据从编辑器中有效并且没有被篡改。 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'
  ]
});

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

1 个答案:

答案 0 :(得分:0)

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

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

现实情况是,我可以使用其他工具(CURL等)将数据发布到应用程序,这样我就无法通过您的用户界面。如果您错误配置TinyMCE,您可能会在不知情的情况下允许标签。在将数据存储到数据库之前,您应始终验证数据服务器端 - 这是确保您保存的内容的唯一方法是安全"。