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

时间:2011-07-07 21:50:03

标签: javascript database wysiwyg

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

如何从编辑器到数据库进行正确安全的数据传输?

我想使用wysiwyg编辑器,因为这个编辑器的潜在用户将不是这样有经验的用户(Markdown和BB代码对他们来说很难,他们想要像在MS Word中那样))

此外,我还想对此编辑器添加限制,例如:没有图像,只有5种颜色,只有3种类型的字体等等(这可以通过此编辑器的有限控件来完成)

我的问题:如何让这个编辑更安全?如何防止从用户或<script>标签添加额外的html。在呈现此内容的模板页面(新闻或文章)时,是否必须从数据库(保存的内容,用户在编辑器中编写)中制作数据的html过滤器?

我应该以HTML方式在数据库中存储内容吗? (如果我想要wysiwig-editor,它会在保存后输出HTML)。或者可能是我应该将HTML从编辑器转换为bb-code或markdown(将我的所有限制和限制)并清除所有额外的HTML ...然后当从数据库获取内容时 - 我应该将bb-code / markdown转换为HTML试。

或许有更容易,更快捷的方法来保证这个安全吗?

1 个答案:

答案 0 :(得分:0)

如果你正在将文本填充到innerHTML中,那么让它说一个div,它允许用户编写html并稍后将其显示为HTML。但是,如果您不想让人们注入HTML,您可以使用innerText。 innerText就像innerHTML一样,但没有点击HTML解析器。

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

您还可以使用regex解析器将特殊字符转换为HTML code等效的bb代码或降级为html


试试这个:

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

进行正则表达式替换

然后,当从数据库中检索时,用html替换bb代码并且你已经完成了设置。