安全公告:remove_tags 的安全性

作者:Tim Graham 发布于 2014年8月11日

我们收到了一份报告,指出django.utils.html.remove_tags() 函数和相关的 removetags 模板过滤器无法正确去除混淆的标签。特别是,它们不会递归工作,因此以下输出remove_tags("<sc<script>ript>alert('XSS')</sc</script>ript>", "script")不会去除“嵌套”的脚本标签。

如果您在项目中使用remove_tags()函数或removetags模板过滤器处理用户提供的输入,请检查您的代码,并确保您在未先对其进行转义的情况下,绝不将它们的输出标记为安全。如果您在模板中使用remove_tags()的输出,或者如果您使用removetags模板过滤器,除非您在模板中禁用了自动转义,否则转义是默认的安全行为。

我们计划在 Django 的未来版本中弃用这些函数,而不是保留那些名称可能导致其在安全敏感上下文中使用(而实际上并不安全)的函数。

此问题由 Yoann Ono Dit Biot 报告给 security@djangoproject.com。我们感谢他采取谨慎的做法,私下报告此问题,而不是在 Django 的 Trac 实例中记录公开的工单。有关报告安全问题的更多信息,请参阅我们的安全策略

返回顶部