Санитарная обработка HTML в отправленных данных формы

XXX.Validation = function() {
    var ok = false;
loop:
    do {
        for (...) {
            while (...) {
                if (...) {
                    break loop; // Exist the outermost do-while loop
                }
                if (...) {
                    continue; // skips current iteration in the while loop
                }
            }
        }
        if (...) {
            break loop;
        }
        if (...) {
            break loop;
        }
        if (...) {
            break loop;
        }
        if (...) {
            break loop;
        }
        ok = true;
        break;
    } while(true);
    CleanupAndCallbackBeforeReturning(ok);
    return ok;
};
29
задан abolotnov 21 February 2013 в 13:29
поделиться

3 ответа

Django поставляется с шаблоном фильтра под названием striptags , который вы можете использовать в шаблоне:

value|striptags

Он использует функцию strip_tags, которая находится в django.utils.html. Вы также можете использовать его для очистки данных вашей формы:

from django.utils.html import strip_tags
message = strip_tags(form.cleaned_data['message'])
29
ответ дан Bernhard Vallant 21 February 2013 в 13:29
поделиться

В качестве альтернативы, есть библиотека Python, которая называется bleach :

Bleach - это библиотека для очистки и сортировки текста на основе белого списка HTML. Он предназначен для ввода ненадежного пользовательского ввода с некоторым HTML.

Поскольку Bleach использует html5lib для разбора фрагментов документов так же, как это делают браузеры, он чрезвычайно устойчив к неизвестным атакам, гораздо больше, чем дезинфицирующие средства на основе регулярных выражений.

Пример:

import bleach
message = bleach.clean(form.cleaned_data['message'], 
                       tags=ALLOWED_TAGS,
                       attributes=ALLOWED_ATTRIBUTES, 
                       styles=ALLOWED_STYLES, 
                       strip=False, strip_comments=True)
18
ответ дан Wtower 21 February 2013 в 13:29
поделиться

strip_tags фактически удаляет теги из входных данных, что может быть не тем, что вы хотите.

Чтобы преобразовать строку в «безопасную строку» с угловыми скобками, амперсандами и кавычками, преобразованными в соответствующие объекты HTML, вы можете использовать фильтр escape :

from django.utils.html import escape
message = escape(form.cleaned_data['message'])
47
ответ дан simao 21 February 2013 в 13:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: