Найти - Пользователи
Полная версия: Фильтрация html средствами регулярки
Начало » Python для новичков » Фильтрация html средствами регулярки
1
Ska1n
Добрый день, есть форма, которую вводит пользователей, я написал небольшой 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
FishHook
тынц
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB