Добрый день, есть форма, которую вводит пользователей, я написал небольшой wisywig-редактор на js со вставкой “bb” кода, то есть, теги обрамляются квадратными скобками. Пользователю ничто не мешать ввести html теги, тем самым произвести инъекцию. Накалякал небольшую функцию, которая средствами регулярных выражений пытается пресечь инъекции. Подскажите, пожалуйста, насколько правилен и безопасен подобный велосипед? Заранее благодарен.
def filter_descript(w):#в функцию заходит сам текст
bbcode = ["b","u","i","h4","h5","h6","ul","li","ol"] #перечисляю теги, которые разрешенно вводить
remBR = ["h4","h5","h6","li","ul","ol",] #перечисляю теги, в которых надо убрать <br> тег
w = re.sub("\\<.*\\>", "", w) #удалить текст, обрамленный угловыми скобками
w = re.sub("\r\n", '<br>', w) #заменить перевод строки на тег br
i = 0
for element in remBR: #убрать br на всех тегах, что перечислены в remBR
w = re.sub("\\["+remBR[i]+"\\]<br>", "["+remBR[i]+"]", w)
w = re.sub("\\[/"+remBR[i]+"\\]<br>", "[/"+remBR[i]+"]", w)
i = i + 1
i = 0
for element in bbcode: #заменить квадратные скобки на угловые у тегов, перечисленых в bbcode
w = re.sub('\\['+bbcode[i]+'\\](.+?)\\[/'+bbcode[i]+'\\]', r'<'+bbcode[i]+r'>\1</'+bbcode[i]+r'>', w)
i = i + 1
return w