Javascript 如何实现编辑内容的安全文本编辑器

Javascript 如何实现编辑内容的安全文本编辑器,javascript,database,wysiwyg,Javascript,Database,Wysiwyg,网站上有不同的内容,允许创建/编辑-新闻、文章等 如何正确、安全地将数据从编辑器传输到数据库 我想使用wysiwyg编辑器,因为该编辑器的潜在用户将不是经验丰富的用户,而且BB代码对他们来说很难,他们希望像MS Word= 另外,我想给这个编辑器增加一些限制,例如:没有图像,只有5种颜色,只有3种字体,等等。这可以通过这个编辑器的有限控件来完成 我的问题:如何让这个编辑器更安全?如何防止从用户或标记添加额外的html。我是否必须对来自数据库保存内容的数据进行html筛选,这些数据是用户在呈现此内

网站上有不同的内容,允许创建/编辑-新闻、文章等

如何正确、安全地将数据从编辑器传输到数据库

我想使用wysiwyg编辑器,因为该编辑器的潜在用户将不是经验丰富的用户,而且BB代码对他们来说很难,他们希望像MS Word=

另外,我想给这个编辑器增加一些限制,例如:没有图像,只有5种颜色,只有3种字体,等等。这可以通过这个编辑器的有限控件来完成

我的问题:如何让这个编辑器更安全?如何防止从用户或标记添加额外的html。我是否必须对来自数据库保存内容的数据进行html筛选,这些数据是用户在呈现此内容新闻或文章的模板页面时在编辑器中编写的

我应该在数据库中以HTML方式存储内容吗?如果我想要所见即所得编辑器,它会在保存后输出HTML。或者我应该将HTML从编辑器转换为bb代码,或者降价将我所有的限制和限制,并清除所有额外的HTML。。。然后,当从数据库中获取内容时,我应该再次将bb代码/标记转换为HTML


或者可能有更简单、更快速的方法来保证安全?

如果您将文本填充到的内部html中,比如div,它允许用户编写html并在以后以html的形式显示。但是,如果您不想让人们注入HTML,可以使用innerText。innerText的工作原理与innerHTML类似,但不会影响HTML解析器

如果您计划使用bb代码或标记,您将解析需要转换的代码的文本,并将其余部分保留为文本

您还可以使用解析器将特殊字符转换为等价的bb代码或标记为html

试试这个:

保存到数据库时: 用bb代码替换已知格式良好的html,用[b]替换。但是,格式错误的html将保留为键入的html。然后对所有HTML特殊字符(即<和>


然后,当从数据库检索时,您用html替换bb代码,一切都已就绪。

您在服务器端使用的是什么?这可能适合您:通常使用javascript和php。是的,我理解innerHTML和innerText之间的区别。但若我使用innerText,那个么如何在数据库中显示以HTML方式保存的数据呢?。。。关于使用正则表达式解析html-我听说-这是个坏主意…我使用正则表达式转换特殊字符的意思是用它的实体代码替换任何<和>。这将防止任何书面html被用作标记。这将允许您使用innerHTML,而不用担心注入HTML。这是一个两步的过程。删除不需要的<和>,然后解析其余的文本,并将bb代码转换为html。但使用wysiwyg编辑器,我会以html的方式保存我的内容,如粗体等。将所有<和>更改为实体代码会使标记无效。我不应该更改所有的。使用标记器怎么样如果您知道不希望用户使用的内容,即和,您可以检查每个令牌是否存在恶意文本。但你可能会遇到问题。