Django: 保存用户输入的数据并显示
我有一个表单,里面有一个jwysiwyg编辑器。看起来它可以使用一些基本的HTML格式标签,就像Stack Overflow那样通过格式化按钮来实现。当我提交表单时,我发现内容直接保存到数据库里,而如果我在编辑器里输入像<iframe> ... </iframe>
这样的东西,它在数据库里会被编码成HTML格式。
现在,当我需要输出用户提交的内容时,我能不能安全地使用{{ output|safe }}
来显示这些格式化的文本呢?
这样做安全吗?或者我该怎么做才能更安全呢?
1 个回答
3
只有在你先把数据进行HTML转义后,才可以使用safe
过滤器。否则,你应该使用escape
。如果你希望用户能够输入带有HTML标签的数据,你可以尝试清理这些输入,以防止用户使用<iframe>
、<script>
等标签,但可以允许其他标签在白名单中,然后再标记为safe
。