我正在使用RTF编辑器对用户的评论进行回复。但是我需要限制用户在文本编辑器中键入的html标签,以避免xss攻击。
我知道safe
模板过滤器是最佳选择。
但作为示例,我只接受<p>,<a>,<h3>
之类的标签而不是img,script,...
之类的标签。问题是safe
过滤器接受所有html标记。
我正在寻找这样的东西:
{{user.reply|safe:'<p>,<h3>,<a>'}}
哪个回复是客户的RTF html标签。
并且safe
过滤器仅接受p,a,h3
标签。
i,m使用froala富文本编辑器,我也知道限制文本编辑器选项。但是如果用户尝试插入一些<script>
标签,那么它将无法理解。
如何自定义safe
过滤器?还是哪个过滤器更适合这项工作?
答案 0 :(得分:0)
您应该为此写custom filter
您可以安装和使用BeautifulSoup
from bs4 import BeautifulSoup
from django import template
register = template.Library()
@register.filter(name='includeHtmlTags')
def includeHtmlTags(value, arg):
include=arg.split(",")
soup=BeautifulSoup(text, 'html.parser')
return_value=''
for tag in include:
for i in soup.findAll(tag):
return_value += i
return return_value
在模板中,{% load includeHtmlTags %}
顶部加载
并像{{user.reply|includeHtmlTags:'p,h3,a'}}