Если вы разрешаете вводить информацию пользователям, ее обязательно надо проверять. В простейшем случае можно просто обрезать все теги, как было показано в статье о валидации . Но, что, если некоторые теги (картинки, жирный, наклон, и т.д.), все-таки нужно разрешить? Хорошим примером проверки форм, служит stackoverflow.com и конечно сотни тысяч других. Первый меня заинтересовал прежде всего по тому, что существует его свободный клон на Python (оригинал-же работает на технологии .NET).
Основная задача санитара HTML — пропустить теги и аттрибуты, которые присутствуют в белом листе, и исключить или преобразовать все остальные. Из Питонового клона stackoverflow нас интересует конфигурация дезинфицирования HTML. Он работает использую библиотеку html5lib, логическое продолжение BeautyfulSoup. Качаем все это дело к себе в проект.
Кстати, с самого начала я нашел appengine-html-whitelist. — этот дезинфектор выполнен как сервис, которые получает HTML как параметр и возвращает очищенный на основе правил HTML в разных форматах. Проверьте, возможно это то, что вам надо.
Использовать санитара очень просто:
def sanitize(request): data = request.POST.get('data', None) if data: data = utility.html.sanitize_html(data) return utility.respond(request, "internal/sanitize.html", {"data":data})
И соответственно шаблон:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> {{ data }} <form method="post" action=""> <textarea name="data" COLS=40 ROWS=6>{{ data }}</textarea> <input type="submit" value="submit"> </form> </body> </html>
Метки:appengine, HTML, OpenSource, Python
Похожие статьи
- 2 апреля 2010 -- AppEngine изучаем Request и globals (0)
- 2 апреля 2010 -- AppEngine валидация полей базы и формы (1)
- 19 мая 2010 -- Сюрприз от App Engine — Server Error (1)
- 30 июля 2010 -- DLR 1.0 на примере IronPython 2.6 (0)
- 31 марта 2010 -- Чистка тестовой App Engine базы. (0)
5 апреля, 2010 at 14:29
Попробуем на досуге :-). Интересный сайт stackoverflow.com, будем теперь ссылки спамеров только так вырезать.
14 мая, 2010 at 18:57
в рунете тоже есть сайт как stackoverflow, askdev.ru называется.
16 мая, 2010 at 17:15
В целом неплохо. Интересно было почитать
18 мая, 2010 at 13:06
Даже ссылки с href=»javascript:» не чистит. Или <IMG SRC=»jav ascript:alert(‘XSS’);»>. (это я немножко сам санитизировал — не знаю, как коммент будет выглядеть) Не говоря уже о том, что XSS можно сделать кодом, который html5lib не распарсит (а браузеры будут показывать).http://ha.ckers.org/xss.html почитайте, много интересного узнаете. И это только начало.
18 мая, 2010 at 18:27
Странно, у меня чистит. Проверьте настройки.
19 мая, 2010 at 22:20
Еще раз на всякий случай проверил:
На выходе: