news 2026/5/10 8:14:02

Web安全之SQL注入-CSRF-XSS

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Web安全之SQL注入-CSRF-XSS

聚焦三大高危漏洞:SQL 注入、CSRF、XSS

1. SQL 注入(SQL Injection)

攻击原理

攻击者通过在用户输入中嵌入恶意 SQL 片段,绕过应用逻辑,直接操作数据库。
示例(危险代码):

# 危险!字符串拼接user_id=request.GET['id']query=f"SELECT * FROM users WHERE id ={user_id}"# 输入: 1 OR 1=1 --cursor.execute(query)

→ 可导致:数据泄露、删除表、提权、远程命令执行(如 PostgreSQL 的 COPY TO)

防御手段

方法说明Python 实践
参数化查询(Prepared Statements)最有效!SQL 结构与数据分离SQLAlchemy / Django ORM 默认安全;原生 SQL 使用cursor.execute("SELECT * FROM t WHERE id = %s", (user_id,))
禁用动态 SQL 拼接绝不拼接用户输入到 SQL 字符串避免f"..."str.format()构造 SQL
最小权限原则DB 用户仅授予必要权限不使用 root 连接数据库
输入校验 + 白名单对 ID、枚举值等做类型/范围检查int(user_id)、正则校验
ORM 安全使用避免raw()extra()拼接Django 中慎用User.objects.extra(where=[f"name = '{name}'"])

关键点:只要使用参数化查询,99% 的 SQL 注入可被杜绝。

2. 跨站请求伪造(CSRF, Cross-Site Request Forgery)

攻击原理

攻击者诱导已登录用户访问恶意网站,该网站自动向目标站点(如银行)发起带 Cookie 的请求(如转账),利用用户身份执行非意愿操作。
前提:用户已登录目标站 + 请求无二次验证。

防御手段

方法说明Python 框架支持
CSRF Token每个表单/请求携带一次性 token,服务端校验Django 内置({% csrf_token %}+CsrfViewMiddleware
Flask-WTF 提供csrf_token()
⚠️ FastAPI 需手动实现或用fastapi_csrf_protect
SameSite Cookie设置Cookie: SameSite=Lax/Strict所有框架均可配置(Django 默认Lax
双重提交 CookieToken 同时放在 Cookie 和 Header,比对一致适用于无状态 API(但不如 Token 安全)
敏感操作二次验证如支付需短信/密码确认业务层防御

注意

  • 纯 API 服务(如移动端后端)通常不需要 CSRF 防护(因不依赖 Cookie 认证,改用 Token);
  • 若 Web 前后端同域且用 Cookie 登录,则必须启用 CSRF。

3. 跨站脚本攻击(XSS, Cross-Site Scripting)

攻击原理

攻击者将恶意脚本(JavaScript)注入网页,当其他用户浏览时执行,窃取 Cookie、会话、钓鱼等。
分类

  • 存储型 XSS:恶意脚本存入 DB(如评论区)
  • 反射型 XSS:脚本通过 URL 参数反射(如搜索框)
  • DOM 型 XSS:前端 JS 动态写入未转义内容

示例

<!-- 用户输入: <script>alert(document.cookie)</script> --><p>{{ user_comment }}</p><!-- 直接渲染 → 脚本执行! -->

防御手段

层级措施Python 实践
输出编码(Output Encoding)渲染到 HTML 时转义特殊字符Jinja2(Flask/Django)默认自动转义
FastAPI + Jinja2 同样安全
⚠️ 若用 `
内容安全策略(CSP)限制脚本来源,禁止内联脚本添加响应头:
Content-Security-Policy: default-src 'self'; script-src 'self' https://trusted.cdn.com
→ Django 用django-csp,Flask 用flask-talisman
输入过滤(辅助)对富文本使用白名单过滤bleach库清理 HTML:
bleach.clean(html, tags=['p', 'strong'], attributes={})
HttpOnly Cookie阻止 JS 读取 CookieDjango/Flask/FastAPI 均支持设置session_cookie_httponly = True

关键原则

  • 永远不要信任用户输入
  • 转义发生在输出时,而非输入时(避免双重转义);
  • 富文本场景必须用bleach等库做语义清洗。

通用安全加固建议(Python 项目)

类别措施
依赖安全定期扫描:pip-auditsafety;锁定版本(requirements.txt+pip-tools
错误信息生产环境关闭详细错误(DjangoDEBUG=False,FastAPI 关闭debug
安全头启用:X-Content-Type-Options: nosniffX-Frame-Options: DENY(防点击劫持)
认证安全密码哈希用bcrypt/argon2(Django 默认);会话超时;多因素认证(MFA)
日志审计记录关键操作(登录、支付),但不记录密码/Token

推荐工具 & 库(Python)

漏洞工具/库
SQL 注入SQLAlchemy, Django ORM(天然防护)
CSRFDjango 内置, Flask-WTF, fastapi_csrf_protect
XSSbleach(HTML 清洗),jinja2(自动转义)
CSPdjango-csp,flask-talisman
依赖扫描pip-audit,safety,trivy(容器扫描)
安全头secure(WSGI 中间件),fastapi.middleware.trustedhost

安全 Checklist(上线前必查)

  • 所有数据库查询使用参数化(无字符串拼接)
  • Web 表单启用了 CSRF Token(若使用 Cookie 认证)
  • 用户生成内容在 HTML 输出时自动转义
  • 富文本字段经bleach清洗
  • 生产环境DEBUG = False
  • Session Cookie 设置HttpOnly+Secure(HTTPS)
  • 启用 CSP(至少default-src 'self'
  • 依赖无已知 CVE(pip-audit扫描通过)

总结
SQL 注入 → 用参数化查询
CSRF → 用 Token(Web 场景)
XSS → 输出转义 + CSP
安全是“纵深防御”,单点防护不足,需多层叠加!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 17:54:46

PyTorch-CUDA镜像能否用于电梯智能调度

PyTorch-CUDA镜像能否用于电梯智能调度 在现代高层建筑中&#xff0c;电梯不再只是简单的垂直运输工具——它正逐渐演变为一个需要实时决策、动态响应的复杂系统。每天早晚高峰时&#xff0c;人们挤在大厅等待电梯&#xff0c;而控制系统却仍在用几十年前的“就近响应”逻辑派梯…

作者头像 李华
网站建设 2026/5/8 5:05:29

从GitHub克隆项目后如何激活PyTorch虚拟环境?

从GitHub克隆项目后如何激活PyTorch虚拟环境&#xff1f; 在深度学习项目开发中&#xff0c;你是否曾遇到这样的场景&#xff1a;刚从 GitHub 克隆了一个热门的 PyTorch 项目&#xff0c;满怀期待地运行 python train.py&#xff0c;结果却抛出一连串错误——“No module named…

作者头像 李华
网站建设 2026/5/3 18:20:05

10个AI论文软件推荐,继续教育学生轻松搞定毕业论文!

10个AI论文软件推荐&#xff0c;继续教育学生轻松搞定毕业论文&#xff01; AI 工具助力论文写作&#xff0c;让学术之路更轻松 在当今信息化时代&#xff0c;AI 技术已经渗透到各行各业&#xff0c;教育领域也不例外。对于继续教育的学生而言&#xff0c;撰写毕业论文是一项…

作者头像 李华
网站建设 2026/5/1 6:34:26

网络安全完全指南:从小白到黑客必学的10大防范技术(建议收藏)

一、引言 在当今数字化的时代&#xff0c;网络已经成为人们生活和工作中不可或缺的一部分。然而&#xff0c;随着网络的普及和应用的广泛&#xff0c;网络安全问题也日益凸显。从个人隐私泄露到企业关键信息被盗&#xff0c;从网络欺诈到大规模的网络攻击&#xff0c;网络安全…

作者头像 李华
网站建设 2026/4/26 3:42:37

通达信天狼操盘 源码 贴图

{}X_1:REF(CLOSE,1); X_2:SMA(MAX(CLOSE-X_1,0),3,1)/SMA(ABS(CLOSE-X_1),3,1)*100; X_3:EMA(CLOSE,3); X_4:EMA(CLOSE,21); 波动回调提示图:MA(CLOSE,10000); STICKLINE(X_4>REF(X_4,1),X_4,X_4,5,1),COLORRED,LINETHICK2; STICKLINE(X_4<REF(X_4,1),X_4,X_4,5,1),COLOR…

作者头像 李华
网站建设 2026/5/5 17:57:35

涉密行业首选!MonkeyCode 离线私有化 AI 编程解决方案

代码安全与效率协同&#xff1a;MonkeyCode企业级AI编程私有化解决方案解析 在AI编程工具广泛应用的当下&#xff0c;代码安全与数据隐私已成为企业研发的核心关切点。MonkeyCode作为长亭科技推出的开源企业级AI编程辅助平台&#xff0c;以“私有化部署为核心、安全管控为支撑…

作者头像 李华