Блокировка тегов HTML на веб-странице - PullRequest
1 голос
/ 18 ноября 2010

Итак, у меня есть сайт web 2.0, который я создаю с большим количеством пользовательского ввода, но, как и на любом сайте web 2.0, у меня будут проблемы со спамом. Насколько мне известно, в моем случае проще всего блокировать любые теги HTML. Пользователям не нужно форматирование, а я буду использовать для исправления пробелов.

Но я не думаю, что есть какие-то блокирующие теги, xmb звучит идеально, но с 90-х годов уже устарела, настолько глупа.

В противном случае, какая фильтрация мне нужна? Я вижу, что переполнение стека допускает «базовый» HTML ... Как мне это сделать? Блокируйте определенные теги или разрешите определенные теги и т. Д. Как я уже сказал, пользователям не нужно никаких тегов.

Редактировать: используя django

Ответы [ 2 ]

3 голосов
/ 18 ноября 2010

В Django вы можете экранировать (кодировать) специальные символы HTML, такие как < и >, чтобы теги могли отображаться как читаемый текст, но не функционировать как HTML:

from django.utils.html import escape
print escape('<div class="q">Q & A</div>')

Обратите внимание, что переменные вашего шаблона, возможно, уже экранированы, вы можете сначала проверить его, чтобы увидеть, нужно ли вам использовать escape .

Или вы можете полностью удалитьтеги выглядят следующим образом:

from django.utils.html import strip_tags
strip_tags(string_value)

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

{{ value|striptags }}
2 голосов
/ 18 ноября 2010

Если вы не хотите разрешать HTML, просто конвертируйте символы со специальным значением в соответствующие им объекты. например > до &gt; и & до &amp;. То, как вы это сделаете, зависит от языка, с которым вы обрабатываете данные, в TT я бы [% some_data | html %], тогда как в PHP вступила бы в действие функция htmlspecialchars .

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...