- Хроники. - -
Чистим HTML в AppEngine (Sanitize HTML)
Posted By Ikutsin On 5 апреля 2010 @ 12:59 In Python | Comments Disabled
[1]Если вы разрешаете вводить информацию пользователям, ее обязательно надо проверять. В простейшем случае можно просто обрезать все теги, как было показано в статье о валидации [2] . Но, что, если некоторые теги (картинки, жирный, наклон, и т.д.), все-таки нужно разрешить? Хорошим примером проверки форм, служит stackoverflow.com [3] и конечно сотни тысяч других. Первый меня заинтересовал прежде всего по тому, что существует его свободный клон на Python (оригинал-же работает на технологии .NET).
Основная задача санитара HTML — пропустить теги и аттрибуты, которые присутствуют в белом листе, и исключить или преобразовать все остальные. Из Питонового клона stackoverflow [4] нас интересует конфигурация дезинфицирования HTML [5]. Он работает использую библиотеку html5lib [6], логическое продолжение BeautyfulSoup. Качаем все это дело к себе в проект.
Кстати, с самого начала я нашел appengine-html-whitelist [7]. — этот дезинфектор выполнен как сервис, которые получает 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>
Article printed from Хроники.:
URL to article: /1397-chistim-html-v-appengine-sanitize-html
URLs in this post:
[1] Image: /wp-content/uploads/2010/04/sanitize.png
[2] о валидации: /1374-appengine-validaciya-polej-bazy-i-formy
[3] stackoverflow.com: http://meta.stackoverflow.com/questions/1777/what-html-tags-are-allowed-on-stack-overflow-server-fault-and-super-user
[4] Питонового клона stackoverflow: http://code.google.com/p/soclone/
[5] конфигурация дезинфицирования HTML: http://code.google.com/p/soclone/source/browse/trunk/soclone/utils/html.py
[6] html5lib: http://code.google.com/p/html5lib/
[7] appengine-html-whitelist: http://code.google.com/p/appengine-html-whitelist/
Click here to print.
Copyright © 2008 Все, что меня окружает. All rights reserved.