XSS、CSRF 与 SQL 注入防护
正确使用 Django 的防护机制
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 反馈 — 无需本地设置。
此课程中的所有课时
- DEBUG、SECRET_KEY 与 ALLOWED_HOSTS
- HTTPS、HSTS 与安全 Cookie
- XSS、CSRF 与 SQL 注入防护
- 执行部署检查清单