3

Django でユーザー入力を浄化したい。

Django Html Purifierがあることは知っていますが、もっと軽いものがあるのではないでしょうか? ユーザーに使用を許可したいタグが非常に限られている場合はどうすればよい<b>ですか? たぶん、私が使用できる組み込みのDjangoがありますか?

4

2 に答える 2

5

django-bleachPHP 実装から派生したものが一般的に使用されます。

プロジェクトはこちら: https://bitbucket.org/ionata/django-bleach

使い方は本当に簡単で、ドキュメントによると、あなたが望むことをしているようです:

# Which HTML tags are allowed
BLEACH_ALLOWED_TAGS = ['p', 'b', 'i', 'u', 'em', 'strong', 'a']

乾杯 :)

于 2012-11-24T09:20:37.680 に答える
3

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>')
于 2012-11-23T09:28:22.210 に答える