如何在Django中防止XSS攻击

问题描述 投票:-1回答:1

我正在尝试防止Django中的XSS攻击,仅在HTML文件中使用{{ body|escape }}可以吗?我如何在后端进行一些过滤?

django xss websecurity
1个回答
0
投票

并非每种情况在安全性上都是相同的。很难在不看到您的应用程序,用例和所用Django版本的情况下提供完整的建议。

如果您使用Django的模板系统,并确保启用了自动转义(在最新版本中默认启用),那么您的安全率为9x%。 Django提供了一种自动转义机制来停止XSS:它将自动转义动态插入模板中的数据。您仍然必须注意一些问题:

  • 插入动态数据的所有属性。用<img alt="{{somevar}}">代替。 Django的自动转义不会覆盖您未引用的属性值。

    • 插入CSS(样式标记和属性)或Javascript(脚本块,事件处理程序和onclick属性)的数据,您必须使用适用于CSS或Javascript的转义规则手动转义数据(可能使用自定义过滤器在Python端)。

    • 插入URL属性(href,img src)的数据,您必须通过对照允许的协议白名单检查协议(例如https:,mailto:,..)来手动验证URL以确保其安全。 。,但永远不会[javascript:)。

    • 避免通过用户输入设置html属性。

    • 如果使用mark_safe,请确保您知道自己在做什么,并且数据确实是“安全的”。

总会有更多,但这涵盖了最广为人知的问题。始终确保参考OWASP来了解不同的XSS攻击以及它们如何应用于您的特定应用程序:

© www.soinside.com 2019 - 2024. All rights reserved.