В моем приложении web2py я обрабатываю список элементов, где пользователь может щелкнуть ссылку для каждого элемента, чтобы выбрать его. Элемент имеет UUID, заголовок и описание. Для лучшей ориентации описание элемента также отображается в виде заголовка ссылки. Чтобы предотвратить инъекции и избежать тегов в описании, я использую дезинфицирующее средство XML следующим образом:
A(this_item.title, \
callback = URL('item', 'select', \
vars=dict(uuid=this_item.uuid), user_signature=True), \
_title=XML(str_replace(this_item.description, {'\r\n':' ', '<':'<', '>':'>'}), sanitize=True))
При использовании Python 2 все было в порядке. Поскольку я перешел на Python 3, у меня возникла следующая проблема. Когда описание содержит разрывы строк, дезинфицирующее средство больше не работает. Например, следующая строка, созданная моей подпрограммой str_replace, подходит для очистки с помощью помощника XML в Python 2, но не в Python 3:
Header Line1 Line2 Line3
Очистка разрывов строк, экранированных
проблема с Python 3 (но не с Python 2). Все остальное не является проблемой для XML помощника для очистки (например, меньше или больше чем, мне это нужно, поскольку, если нет описания, оно генерируется как <no description>
).
Как может быть строка разрывы, очищенные помощником XML, работающим с web2py под Python3?
Спасибо за любую поддержку!
С наилучшими пожеланиями, Клеменс