如何在 django 中防止 XSS 攻击



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

并非每种情况在安全方面都相同。很难在不看到您的应用程序、用例和您使用的 Django 版本的情况下给出完整的建议。

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

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

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

    • 插入到 URL 属性(href、img src(中的数据,您必须根据允许的协议白名单(例如https:, 邮件收件人:, ...但从来没有javascript:(。

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

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

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

  • https://owasp.org/www-community/attacks/xss/
  • https://cheatsheetseries.owasp.org/cheatsheets/Cross_Site_Scripting_Prevention_Cheat_Sheet.html

相关内容

  • 没有找到相关文章

最新更新