Хочу добавить некоторые bbcode теги в комментарии. Делаю так:
При сохранении в базу сообщение эскепирую, то есть все теги с квадратными скобками сохранятся:
from django.utils.html import escape
cd['message'] = escape(cd['message'])
@register.filter
def bbcode(value):
bbdata = [
(r'\[url=(.+?)\](.+?)\[/url\]', r'<a href="\1">\2</a>'),
(r'\[b\](.+?)\[/b\]', r'<b>\1</b>'),
(r'\[i\](.+?)\[/i\]', r'<i>\1</i>'),
(r'\[u\](.+?)\[/u\]', r'<u>\1</u>'),
(r'\[quote\](.+?)\[/quote\]', r'<div style="margin-left: 1cm">\1</div>'),
(r'\[code\](.+?)\[/code\]', r'<pre>\1</pre>'),
]
for bbset in bbdata:
p = re.compile(bbset[0], re.DOTALL)
value = p.sub(bbset[1], value)
return value
{{ comment.text|bbcode|safe|linebreaks }}
1) Безопасно ли так делать (xss?)?
2) Может есть ещё решения?