Django Academy · 课时

XSS、CSRF 与 SQL 注入防护

正确使用 Django 的防护机制

第 3 / 4 课13 个步骤

XSS、CSRF 与 SQL 注入防护 是 CoddyKit 上的免费 Django Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Django Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Django Academy 课程共包含 4 节课。

三种危险的 Web 攻击

大多数 Web 入侵都来自三种经典攻击:XSS、CSRF 和 SQL 注入。好消息是,只要正常使用 Django,它就能防御这三种攻击。🛡️

什么是 XSS

当攻击者提供的文本在其他用户的浏览器中被渲染为可执行的 HTML 或脚本时,就会发生 XSS,从而可能窃取数据或劫持页面。

模板会自动转义

Django 的模板引擎会对变量进行自动转义,将危险字符转换为安全实体。用户输入中的脚本会被渲染为无害文本,而不是代码。

<p>{{ user_comment }}</p>

不要禁用转义

safe 过滤器和 mark_safe 会关闭转义功能。只能对您完全信任的内容使用它们,否则就会重新打开 XSS 的入口。

{{ user_comment|safe }}

什么是 CSRF

CSRF 会诱骗已登录用户的浏览器向您的网站提交隐藏请求,执行用户从未打算执行的操作,例如更改密码。

CSRF 令牌

Django 通过与每个会话绑定的秘密 CSRF 令牌来阻止此类攻击。来自其他网站的伪造表单无法包含正确令牌,因此 POST 请求会被拒绝。

将令牌添加到表单

将 csrf_token 标签放入每个 POST 表单中。Django 会自动注入隐藏字段,并在提交时验证它。

<form method="post">{% csrf_token %}
  ...
</form>

什么是 SQL 注入

SQL 注入会通过用户输入将恶意 SQL 偷渡到查询中,使攻击者能够读取、更改或删除本不应接触的数据。

ORM 会保护您

使用 ORM 默认就能保持安全。它会对值进行参数化,因此用户输入会被视为数据,而不会被当作可执行 SQL。

Article.objects.filter(title=user_input)

参数化原始 SQL

如果必须编写原始 SQL,绝不要将输入拼接到字符串中。请将值作为参数传入,由驱动程序为您安全地进行转义。

Article.objects.raw("SELECT * FROM blog_article WHERE id = %s", [pk])

添加内容安全策略

为了纵深防御 XSS,内容安全策略会告诉浏览器哪些脚本可以运行。即使恶意标记漏了进来,它也能限制造成的损害。

快速检查

回答一个关于 Django 如何阻止这些攻击的问题。

回顾:默认设置是您的朋友

模板自动转义、CSRF 令牌和参数化 ORM 共同阻止了 XSS、CSRF 和 SQL 注入。保持使用默认设置,您就能保持安全。🙌

免费开始

用 AI 导师学习 Python — 免费

在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。

课程
30
课程
120

常见问题解答

「XSS、CSRF 与 SQL 注入防护」课时是免费的吗?

是的 — 「XSS、CSRF 与 SQL 注入防护」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Django Academy 课程的其余内容,请升级到 CoddyKit PRO。 Django Academy 课程共包含 4 节课。

「XSS、CSRF 与 SQL 注入防护」这节课中我会学到什么?

正确使用 Django 的防护机制 你通过在浏览器中直接运行的动手代码来练习 Django Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Django Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Django Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。

「XSS、CSRF 与 SQL 注入防护」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Django Academy 课中编写并运行代码吗?

能。每节 Django Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. DEBUG、SECRET_KEY 与 ALLOWED_HOSTS
  2. HTTPS、HSTS 与安全 Cookie
  3. XSS、CSRF 与 SQL 注入防护
  4. 执行部署检查清单
← 返回 Django Academy