簡體   English   中英

django安全模板過濾器定制

[英]django safe template filter customization

我正在使用RTF編輯器對用戶的評論進行回復。 但是我需要限制用戶在文本編輯器中鍵入的html標簽,以避免xss攻擊。

我知道safe模板過濾器是最佳選擇。 但是作為示例,我只接受<p>,<a>,<h3>類的標簽<p>,<a>,<h3>而不是img,script,... 問題是safe過濾器接受所有html標簽。

我正在尋找這樣的事情:

{{user.reply|safe:'<p>,<h3>,<a>'}}

哪個回復是客戶的RTF html標簽。 safe過濾器只接受p,a,h3標簽。

我使用froala富文本編輯器,我也知道限制文本編輯器選項。 但是,如果用戶嘗試插入一些<script>標記,則無法理解。

如何自定義safe過濾器? 或者哪個過濾器更適合這項工作?

您應該為此編寫自定義過濾器

您可以安裝和使用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'}}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM