我想在 Django 中净化用户输入。
我知道有Django Html Purifier但也许有更轻的东西?如果我希望允许用户使用的标签非常有限,例如 just<b>
怎么办?也许我可以使用一些内置的 Django?
我想在 Django 中净化用户输入。
我知道有Django Html Purifier但也许有更轻的东西?如果我希望允许用户使用的标签非常有限,例如 just<b>
怎么办?也许我可以使用一些内置的 Django?
django-bleach
派生自 PHP 实现是常用的。
该项目在这里:https ://bitbucket.org/ionata/django-bleach
它的用法非常简单,根据文档似乎可以做你想做的事:
# Which HTML tags are allowed
BLEACH_ALLOWED_TAGS = ['p', 'b', 'i', 'u', 'em', 'strong', 'a']
干杯:)
Python 有一个HTML Parser用于处理字符串中的标签。请也看看这个问题。
您可以在此模块之上为您的用例编写一些内容。例如
from HTMLParser import HTMLParser
VALID_TAGS = ['b', 'a', 'strong']
class ForbiddenHTMLException(Exception):
pass
class MyHTMLParser(HTMLParser):
def handle_starttag(self, tag, attrs):
if tag in VALID_TAGS:
pass
else:
raise ForbiddenHTMLException
def validate(html):
parser = MyHTMLParser()
try:
parser.feed(html)
return True
except ForbiddenHTMLException:
return False
print validate('<b>This is bold Text</b>')
print validate('<p>This is not inside b tag.</p>')