跨站脚本 (XSS) 防护¶
XSS攻击允许用户注入客户端脚本到其他用户的浏览器里。 这通常是通过存储在数据库中的恶意脚本,它将检索并显示给其他用户,或者通过让用户点击一个链接,这将导致攻击者的 JavaScript 被用户的浏览器执行。 然而,XSS 攻击可以来自任何不受信任的源数据,如 Cookie 或 Web 服务,任何没有经过充分处理就包含在网页中的数据。
使用 Django 模板保护你免受多数 XSS 攻击。 然而,重要的是要了解它提供了什么保护及其局限性。
Django 模板会 编码特殊字符 ,这些字符在 HTML 中都是特别危险的。 虽然这可以防止大多数恶意输入的用户,但它不能完全保证万无一失。 例如,它不会防护以下内容:
如果 var 设置为 ‘class1 οnmοuseοver=javascript:func()’, 这可能会导致在未经授权的 JavaScript 的执行,取决于浏览器如何呈现不完整的 HTML。 (对属性值使用引号可以修复这种情况。)
同样重要的是is_safe要特别小心的用在 自定义模板标签,safe 模板标签,mark_safe ,还有 autoescape 被关闭的时候。
此外,如果您使用的是模板系统输出 HTML 以外的东西,可能会有完全不同的字符和单词需要编码。
你也应该在数据库中存储 HTML 的时候要非常小心,尤其是当 HTML 被检索然后展示出来。
跨站请求伪造 (CSRF) 防护¶
CSRF 攻击允许恶意用户在另一个用户不