网站上有不同的内容,允许创建/编辑 - 新闻,文章等。
如何从编辑器到数据库进行正确安全的数据传输?
我想使用wysiwyg编辑器,因为这个编辑器的潜在用户将不是这样有经验的用户(Markdown和BB代码对他们来说很难,他们想要像在MS Word中那样))
此外,我还想对此编辑器添加限制,例如:没有图像,只有5种颜色,只有3种类型的字体等等(这可以通过此编辑器的有限控件来完成)
我的问题:如何让这个编辑更安全?如何防止从用户或<script>
标签添加额外的html。在呈现此内容的模板页面(新闻或文章)时,是否必须从数据库(保存的内容,用户在编辑器中编写)中制作数据的html过滤器?
我应该以HTML方式在数据库中存储内容吗? (如果我想要wysiwig-editor,它会在保存后输出HTML)。或者可能是我应该将HTML从编辑器转换为bb-code或markdown(将我的所有限制和限制)并清除所有额外的HTML ...然后当从数据库获取内容时 - 我应该将bb-code / markdown转换为HTML试。
或许有更容易,更快捷的方法来保证这个安全吗?
答案 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代码并且你已经完成了设置。