【问题标题】:How to strip html/javascript from text input in django如何从 django 中的文本输入中去除 html/javascript
【发布时间】:2010-10-27 04:22:47
【问题描述】:

从字符串中删除所有 html/javascript 的最简单方法是什么?

【问题讨论】:

    标签: python django


    【解决方案1】:

    Django 提供了一个实用函数来删除 HTML 标签:

    from django.utils.html import strip_tags
    
    my_string = '<div>Hello, world</div>'
    my_string = strip_tags(my_string)
    print(my_string)
    # Result will be "Hello, world" without the <div> elements
    

    这个函数在旧的 Django 版本(1.7 之前)上曾经是不安全的,但现在使用它完全安全Here is 一篇文章在相关问题时对其进行了评论。

    【讨论】:

    • strip_tags 不会剥离 html 实体。
    • 所以这只会去掉它们自己的标签。实际内容呢?
    【解决方案2】:

    striptags 模板过滤器。

    {{ value|striptags }}
    

    【讨论】:

      【解决方案3】:

      Django 3

      {{ the_value | striptags | safe | escape }}
      

      【讨论】:

      • striptags 上的文档明确表示“永远不要将安全过滤器应用于 striptags 输出”,但随后您调用 escape... 这应该只是 {{ the_value|striptags }}。跨度>
      • 感谢您提出这样的安全问题,这是很久以前的事了,我记得;我一直在尝试链接不同的过滤器以获得所需的输出。尽管在我的案例中没有涉及用户输入以三思而后行或安全过滤器的使用,但如果您正在按摩用户输入的输入,那么您是完全有道理的,我们必须更加小心。
      • 我认为,如果您在 |safe 的输出上调用 |escape,它不会做任何事情。
      猜你喜欢
      • 2010-11-23
      • 1970-01-01
      • 2011-04-26
      • 2019-11-22
      • 1970-01-01
      • 2012-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多