Django でユーザー入力を浄化したい。
Django Html Purifierがあることは知っていますが、もっと軽いものがあるのではないでしょうか? ユーザーに使用を許可したいタグが非常に限られている場合はどうすればよい<b>
ですか? たぶん、私が使用できる組み込みのDjangoがありますか?
Django でユーザー入力を浄化したい。
Django Html Purifierがあることは知っていますが、もっと軽いものがあるのではないでしょうか? ユーザーに使用を許可したいタグが非常に限られている場合はどうすればよい<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 パーサーがあります。こちらの質問も参考にしてください。
ユースケースに合わせて、このモジュールの上に何かを書くことができます。例えば
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>')