后端学习笔记

2026年6月2日 6 分钟阅读 1478 次阅读
📖 文章摘要

本文介绍了常见的Web安全漏洞及其防范方法,包括SQL注入、XSS攻击、CSRF攻击和文件上传漏洞。

Web 安全基础入门

Web 安全是每个开发者都应该了解的知识。无论你使用哪种编程语言或框架,安全隐患一旦被利用,就可能导致数据泄露、服务瘫痪甚至财产损失。本文将从实战角度,介绍几种最常见的 Web 安全漏洞及其防范方法,帮助你在开发中建立起基本的安全防线。


1. SQL 注入

原理

SQL 注入发生在攻击者将恶意 SQL 代码插入到应用程序的输入参数中,并最终被拼接到数据库查询语句里执行。例如,登录接口中使用 SELECT * FROM users WHERE username='$name' AND password='$pwd',如果攻击者将 name 设为 ' OR '1'='1,则整个查询条件恒为真,从而绕过身份验证。

常见攻击场景

· 登录绕过
· 通过 UNION 查询窃取其他表的数据
· 利用 xp_cmdshell(SQL Server)或 INTO OUTFILE(MySQL)执行系统命令

防范方法

· 使用参数化查询(预编译语句):这是最根本的防御手段,如 JDBC 的 PreparedStatement、Python 的 cursor.execute(sql, params)、PHP 的 PDO。
· 对输入做严格校验:对数字型参数强制类型转换,对字符串按白名单过滤特殊字符。
· 最小权限原则:数据库连接账号只授予必要的表读写权限,避免使用 DBA 或 root。
· 避免暴露数据库错误信息:生产环境关闭 display_errors 或使用通用错误页面。


2. XSS 攻击(跨站脚本攻击)

原理

XSS 是指攻击者将恶意 JavaScript 代码注入到网页中,当其他用户访问该页面时,脚本在受害者浏览器中执行。根据注入方式分为三类:

· 反射型:恶意参数直接出现在 URL 中,服务端原样返回,例如搜索框中输入 。

· DOM 型:纯前端漏洞,通过修改 DOM 结构执行恶意逻辑,不经过服务端。

防范方法

· 输出编码:根据上下文对输出内容进行 HTML 实体编码(如 < → <)、JS 编码、URL 编码。现代模板引擎(如 Thymeleaf、Vue 的 {{ }})默认会进行转义。
· 输入过滤:对富文本内容使用白名单过滤(如 DOMPurify 库),剔除

最后更新:2026年6月29日CC BY-NC-SA 4.0

评论

暂无评论,来写第一条吧

© 2026 My Blog. Built with Nuxt.js + FastAPI.