我想知道我应该以哪种方式执行以下操作。我正在使用微型 MCE 所见即所得编辑器,它使用正确的 html 标签格式化用户数据。现在,我需要将输入到编辑器中的这些数据保存到数据库表中。
我应该在插入数据库时将 html 标签编码为其相应的实体,然后当我从表中取回数据时,没有将其编码用于 XSS 目的,但我仍然必须使用 eval 对 html 标签进行格式化文本。
或者
我是否将 html 标签保存到数据库中,然后当我从数据库中取回数据时,将 html 标签编码为它们的实体,但是当标签显示给用户时,我必须使用 eval 函数来实际格式化输入的数据。
我的想法是第一个选项,我只是想知道你们的想法。
最佳答案
两者都不。您可以“按原样”存储 HTML,因此当您将其拉出时,它已准备好进行渲染。你不应该来回转换。你输入的应该就是你展示的。您想要做的是在将输入放入数据库之前过滤输入。 tinyMCE 和 ck/fckEditor 都有限制可在编辑器中使用的标签的工具,它会为您去除这些标签。然后您需要执行任何其他必要的验证或格式设置。
关于php - 最佳实践。我是在数据库中保存 html 标签还是存储 html 实体值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2777278/