Как я могу сделать HTML безопасным для веб-браузера с python? - PullRequest
1 голос
/ 22 октября 2009

Как сделать HTML из электронной почты безопасным для отображения в веб-браузере с python?

При отображении не должно быть никаких внешних ссылок. Другими словами, весь отображаемый контент должен поступать из электронной почты, а не из Интернета.

Кроме спам-писем, они должны отображаться как можно точнее, чем задумано автором.

Я бы не хотел кодировать это сам.

Решения, требующие последней версии браузера (firefox), также приемлемы.

Ответы [ 3 ]

1 голос
/ 23 октября 2009

html5lib содержит дезинфицирующее средство HTML + CSS. В настоящее время он допускает слишком много, но не должно быть слишком сложно изменить его в соответствии с вариантом использования.

Нашел от здесь .

1 голос
/ 23 октября 2009

Мне не совсем понятно, что именно вы имеете в виду под "безопасным". Это довольно большая тема ... но, для чего она стоит:

По моему мнению, разборщик парсеров из ActiveState Cookbook - одно из самых простых решений. Вы можете в значительной степени скопировать / вставить класс и начать использовать его.

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

0 голосов
/ 22 октября 2009

Используйте модуль HTMLparser или установите BeautifulSoup и используйте их для анализа HTML, а также для отключения или удаления тегов. Это оставит любой текст ссылки, который там был, но он не будет выделен и не будет кликабельным, так как вы отображаете его с помощью компонента веб-браузера.

Вы могли бы прояснить, что было сделано, заменив <A></A> на <SPAN></SPAN> и изменив текстовое оформление, чтобы показать, где раньше была ссылка. Возможно, другой оттенок синего, чем обычно, и пунктирное подчеркивание, указывающее на разбитость. Таким образом, вы немного ближе к отображению, как задумано, фактически не вводя людей в заблуждение, нажимая на что-то, что не кликабельно. Вы могли бы даже добавить всплывающую подсказку в Javascript или pure CSS , которая выдает всплывающую подсказку, объясняющую, что ссылки были отключены по соображениям безопасности.

Аналогичные действия можно выполнить с тегами <IMG></IMG>, в том числе заменив их пустым прямоугольником, чтобы макет страницы был близок к оригиналу.

Я делал такие вещи с Beautiful Soup , но HTMLparser включен в Python. В старых дистрибутивах Python был htmllib, который сейчас не поддерживается. Поскольку HTML-код в сообщении электронной почты может быть не совсем корректным, используйте Beautiful Soup 3.0.7a, который лучше подходит для понимания испорченного HTML-кода.

...