Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 13, 2013 01:40:13

Ska1n
Зарегистрирован: 2012-06-10
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Фильтрация html средствами регулярки

Добрый день, есть форма, которую вводит пользователей, я написал небольшой 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

Офлайн

#2 Апрель 14, 2013 07:46:54

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Фильтрация html средствами регулярки

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version