【问题标题】:How to prevent XSS attack in django如何在 django 中防止 XSS 攻击
【发布时间】:2020-08-28 12:16:13
【问题描述】:

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

【问题讨论】:

  • 我们需要查看您的实际代码来帮助您防止这种情况。只需 1 个字符即可将安全代码变成易受攻击的东西。
  • 话虽如此,您最好在Information Security 上提出这个问题(假设您添加了相关代码)

标签: django xss websecurity


【解决方案1】:

并非每种情况都具有相同的安全性。如果没有看到您的应用程序和用例以及您使用的 Django 版本,很难给出完整的建议。

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

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

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

    • 数据插入到 URL 属性(href、img src)中,您必须手动验证 URL 以通过根据允许协议的白名单检查协议(例如 https:、mailto:、 ...但绝不是javascript:)。

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

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

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

【讨论】:

    猜你喜欢
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-19
    • 1970-01-01
    • 2023-03-04
    相关资源
    最近更新 更多