代码之家  ›  专栏  ›  技术社区  ›  cwj

一种“安全”的python HTML文本格式(ala textile)

  •  3
  • cwj  · 技术社区  · 16 年前

    我设法在我看到的现有图书馆中找到了一些漏洞。他们有时不会以应有的方式逃避事情,会让我直接输入HTML,列表还会继续。

    3 回复  |  直到 16 年前
        1
  •  6
  •   Matthew Christensen    16 年前

    如果你正在使用Django,你可以尝试安全的markdown:

    {% load markup %}
    
    {{ foo|markdown:"safe" }}
    

    django.contrib.markup 在你的 settings.py 应用程序。

    如果你想在保存时对HTML进行消毒,我很幸运地使用了feedparser的消毒程序( http://www.feedparser.org/

    import feedparser
    
    body = feedparser._sanitizeHTML(body, 'utf8')
    
        2
  •  2
  •   OverClocked    15 年前

    如果你正在寻找纺织解决方案:django标记使用的PyTextile实际上有一个textile_restricted()函数,但由于某种原因,它从未进入django.contrib.markup。您可以使用此功能提供受限制的纺织品。要么在模型中添加一个调用textile_restricted的方法,要么使用自定义模板标记 textile_restricted

    from django import template
    from django.conf import settings
    from django.utils.encoding import smart_str, force_unicode
    from django.utils.safestring import mark_safe
    
    register = template.Library()
    
    def textile_restricted(value):
        try:
            import textile
        except ImportError:
            if settings.DEBUG:
                raise template.TemplateSyntaxError("Error in {% textile %} filter: The Python textile library isn't installed.")
            return force_unicode(value)
        else:
            return mark_safe(force_unicode(textile.textile_restricted(smart_str(value))))
    textile_restricted.is_safe = True
    
    register.filter(textile_restricted)
    
        3
  •  1
  •   Jani Hartikainen    16 年前
    推荐文章