所以,我有一个web 2.0网站,我正在构建大量用户输入,但与任何web 2.0网站一样,我会遇到垃圾邮件问题。据我所知,在我的情况下最简单的方法是阻止任何HTML标记。用户不需要格式化,我将用于修复间距。
但是我不认为有任何阻挡标签,xmb听起来很完美,但自从90年代以来就被贬低了,所以非常愚蠢。
否则,我需要什么样的过滤?我看到堆栈溢出允许'基本'HTML ...我该怎么做?阻止某些标签或允许某些标签等。正如我所说,用户不需要任何标签。
编辑:使用django
答案 0 :(得分:3)
在 Django 中,您可以转义(编码)特殊HTML字符,例如<
和>
,这样标记可以显示为可读文本,但不起作用HTML:
from django.utils.html import escape
print escape('<div class="q">Q & A</div>')
请注意,您的模板变量可能已被转义,您可能需要先检查它,看看是否需要使用转义。
或者您可以按如下方式完全删除标签:
from django.utils.html import strip_tags
strip_tags(string_value)
或者,您可以使用模板过滤器将其删除,如:
{{ value|striptags }}
答案 1 :(得分:2)
如果您不想允许任何HTML,则只需将具有特殊含义的字符转换为各自的实体即可。例如>
到>
和&
到&
。如何执行此操作取决于您处理数据的语言,在TT中我会[% some_data | html %]
,而在PHP中,htmlspecialchars函数将起作用。
如果您想要允许某些内容,则需要运行它并使用HTML解析器,针对白名单检查每个元素和属性,然后将其序列化为HTML。有一些工具可以帮助解决这个问题,但同样,这取决于您所使用的语言。