面试问你"Web安全",上来就背 OWASP Top 10——但每个漏洞的"原理、Payload、防御"你真的讲得清吗?
- SQL注入:
' or 1=1 --为什么能"骗"过数据库?- XSS:弹个框而已,为什么算高危?
- 越权:明明登录了,为什么还能看别人的数据?
OWASP Top 10 是Web安全的地基,也是培训机构开班第一课。
这篇文章把十大漏洞原理+示例+防御一次讲透,命令级带练,建议收藏。
一、OWASP Top 10 是什么:先建立"漏洞地图"
OWASP:国际开源Web应用安全项目,每3-4年发布一次"十大Web安全风险"榜单——行业公认的Web安全"检查清单"。
2021年榜单速览(10类):
A01 访问控制失效(越权) A02 加密失败 A03 注入(SQL/命令) A04 不安全设计 A05 安全配置错误 A06 脆弱过时组件 A07 身份认证失败 A08 软件和数据完整性失败 A09 日志监控不足 A10 SSRF(服务端请求伪造)一句话认知:“OWASP Top 10=Web漏洞的’体检清单’——‘不背榜单,要懂每一类的原理和修法’。”
二、注入类:SQL注入(A03,最经典)
原理:用户输入被拼进SQL语句执行,改变了原查询逻辑。
示例(登录绕过):
-- 正常:SELECT * FROM users WHERE name='admin' AND pwd='123'-- 注入:输入 ' or 1=1 ---- 变成:SELECT * FROM users WHERE name='' or 1=1 -- ' AND pwd='123'-- 条件恒真 → 直接登录成功利用思路(靶场练):
判断注入点:' / and 1=1 / and 1=2 猜列数:order by N 查库名:union select database() 查表/数据:information_schema防御(三板斧):
- 参数化查询(首选):
prepare+ 绑定参数 - 输入校验(白名单)
- 最小数据库权限(不用root连库)
一句话:“SQL注入=‘输入变成SQL的一部分’——防它靠参数化查询,不靠过滤关键字。”
三、XSS 跨站脚本(A03):弹框背后的"大危险"
原理:用户输入被当HTML/JS执行(不转义直接输出)。
三类:
| 类型 | 特点 | 例子 |
|---|---|---|
| 反射型 | 一次请求内执行 | URL参数带script |
| 存储型 | 持久化,所有人中招 | 评论区存恶意脚本 |
| DOM型 | 前端JS处理不当 | location.hash注入 |
为什么高危:不只是弹框——窃取Cookie、劫持会话、钓鱼、键盘记录。
防御:
- 输出HTML实体编码(
<→<) - 设置 CSP(内容安全策略)
- Cookie 加
HttpOnly(JS读不到)
一句话:“XSS=‘输入变成页面里的脚本’——防它靠输出编码+CSP+HttpOnly。”
四、越权访问(A01):最容易被忽视的高危
原理:后端只验证"登录了没",没验证"有没有权限"。
两类:
水平越权:用户A 改ID看 用户B 的数据 GET /order/1001 → 改成 1002 → 看到别人的订单 垂直越权:普通用户调管理接口 GET /admin/config → 普通账号也能访问防御:
- 后端做对象级权限校验(每次访问都查"这数据属于你吗")
- 接口级权限矩阵(RBAC)
- 不信任前端隐藏/传参
一句话:“越权=‘只验登录、不验归属’——防它靠’每次访问都校验对象归属’。”
五、SSRF(A10)与文件上传:两个"高频考点"
SSRF(服务端请求伪造):
原理:服务端拿用户传入的URL去请求 → 可访问内网 示例:?url=http://127.0.0.1:8080/admin 探测内网 防御:URL白名单、禁止内网地址、协议限制(禁file://)文件上传漏洞:
原理:上传点没限制类型 → 传WebShell(.php/.jsp) 一句话木马(教学):<?php @eval($_POST['c']); ?> 防御:白名单扩展名+内容校验+存储目录禁止执行一句话:“SSRF=‘服务端被当跳板访问内网’,上传=‘恶意文件进了服务器’——两个都是渗透测试和护网高频考点。”
六、其他高危:反序列化、日志与加密
① 反序列化漏洞
- 原理:反序列化时执行了对象里的"魔术方法"
- 例子:Java(Shiro/Weblogic)、PHP(unserialize)
- 防御:不反序列化不可信数据、更新组件
② 日志监控不足(A09)
- 原理:没日志=攻击来了看不见
- 防御:集中日志+告警(SIEM)
③ 加密失败(A02)
- 明文传输/弱加密(MD5存密码)
- 防御:TLS 1.2+、加盐慢哈希(bcrypt)
一句话:“三个’后补位’:反序列化打组件、日志不足打盲区、加密失败打数据——‘每个都是真实的突破口’。”
七、防御体系:Web安全"四层打法"
① 开发层(源头)
- 参数化查询、输出编码、对象级鉴权
② 组件层
- 依赖漏洞扫描(OWASP Dependency-Check)
- 组件版本及时更新
③ 部署层
- WAF(拦截常见攻击)
- 最小权限+安全配置
④ 监控层
- 日志集中+告警
- 定期渗透测试
一句话:“四层防御:开发写安全、组件查漏洞、部署上WAF、监控看日志——‘每层堵一点,漏洞就进不来’。”
八、Web安全学习路线:从原理到实战(新手版)
阶段1:基础(2-3周)
- 学 HTTP 协议与请求/响应
- 学 HTML/JS/PHP 基础(看得懂即可)
- 搭建靶场(DVWA/pikachu)(自建)
阶段2:十大漏洞逐个练(4-6周)
- 靶场逐个复现:SQL注入→XSS→越权→上传→SSRF
- 学原理+Payload+修复
- 输出"漏洞笔记"(原理/利用/防御三栏)
阶段3:综合实战(2-3周)
- 完整渗透一个靶场站点(自建)
- 学报告编写
- 输出一份"Web安全自查清单"
检验标准:能独立在靶场完成 SQL注入+XSS+越权 三类漏洞利用并给出修复。
🎉恭喜你!Web安全"入门"达成
学到这里,你已经掌握 Web 安全核心体系,可以从事:
- 渗透测试(Web方向)
- 安全开发/安全测试
- 安全运维(Web应用)
薪资区间:8k-20k,Web安全是渗透测试"必修课",岗位需求最大。
这条路,大概需要 2-3 个月的系统投入。
学习与交流
OWASP Top 10 的原理与防御讲完了。
学到这里,你已经知道"十大漏洞的原理、利用思路和修法"——但 Web 安全是"越挖越深"的方向,后面还有代码审计、漏洞挖掘、中间件攻防,一环扣一环。
如果你想继续系统学习 Web 安全:
我们提供体系化的Web安全实战课程:
- 十大漏洞课:原理+Payload+修复逐个带练
- 靶场实战:DVWA/pikachu 从易到难通关
- 渗透全流程:信息收集→利用→报告
想继续学下去、或想要OWASP Top 10速查表的,评论区扣"1",或私信老师咨询课程详情。
特别声明
此教程为纯技术分享!本文目的绝不是为怀有不良动机的人提供技术支持!也不承担因为技术被滥用所产生的连带责任!本文所有漏洞利用,只允许在自建靶场、CTF平台或授权范围内进行,严禁对未授权目标实施任何攻击(属违法行为),目的是唤醒大家对网络安全的重视,采取相应的安全措施,减少因网络安全带来的经济损失!
【深度附录】Web安全·速查与靶场
附录一:十大漏洞防御速查表
| 漏洞 | 核心防御 |
|---|---|
| SQL注入 | 参数化查询 |
| XSS | 输出编码+CSP+HttpOnly |
| 越权 | 对象级鉴权 |
| SSRF | URL白名单+禁内网 |
| 文件上传 | 白名单+禁执行目录 |
| 反序列化 | 不反序列化不可信数据 |
| 加密失败 | TLS1.2++加盐慢哈希 |
| 认证失败 | MFA+防暴破 |
| 配置错误 | 基线加固 |
| 日志不足 | 集中日志+告警 |
一句话:“一张表背下来,面试修复题就’稳’了——每个漏洞一条核心防御。”
附录二:SQL注入手工测试 Payload(靶场用)
' -- 报错则可能注入 'or1=1-- -- 恒真绕过' and 1=1 -- -- 正常 'and1=2-- -- 异常(确认注入点)' order by 3 -- -- 猜列数 'unionselect1,2,3-- -- 找显示位'unionselectdatabase(),user(),version()-- 查信息一句话:“七条Payload=SQL注入’手工流程’——报错、恒真、猜列、联合查询,一套走完。”
附录三:Web安全·面试技术题
- SQL注入怎么防?——参数化查询(不是过滤关键字)
- 存储型XSS为什么高危?——持久化,所有人中招
- 水平越权和垂直越权区别?——同级横跳 vs 低权限访问高权限
- SSRF 能访问什么?——服务端能访问的(内网/云元数据)
- 一句话木马是什么?——极简后门脚本(只允许靶场学习)
- WAF 能防一切吗?——不能,绕过手法多,要配合开发层
答题要点:每个问题给"原理+防御/工具",面试才显"硬"。
附录四:一周实验清单(全部自建靶场/CTF/授权环境)
- 第1天:搭建 DVWA/pikachu 靶场(自建)
- 第2天:复现 SQL 注入(登录绕过+union查库)
- 第3天:复现 反射型/存储型 XSS
- 第4天:复现水平/垂直越权
- 第5天:复现文件上传拿 WebShell(靶场)
- 第6天:输出一份"漏洞笔记(原理/利用/防御)"
一句话:“六天走完,Web安全就’上手’了——靶场、注入、XSS、越权、上传、笔记。”
附录五:
浓缩成三句话:
- SQL注入靠参数化查询防、XSS靠输出编码防、越权靠对象级鉴权防
- SSRF=服务端当跳板,上传=恶意文件进服务器——两个都是护网高频
- 四层防御:开发写安全、组件查漏洞、部署上WAF、监控看日志
附录六:SQL 注入进阶——三种类型怎么判断(靶场用)
| 类型 | 特征 | 判断方法 |
|---|---|---|
| 联合查询注入 | 页面有数据回显 | union select猜列 |
| 报错注入 | 错误信息回显 | and extractvalue(1,concat(0x7e,database())) |
| 时间盲注 | 无回显 | if(1=1,sleep(5),0)看延迟 |
一句话:“三类型三判断:有回显用union、有报错用报错注入、都没有用时间盲注——‘先看回显,再选打法’。”
附录七:XSS 利用场景(为什么高危)
| 场景 | 后果 |
|---|---|
| 窃取Cookie | 会话劫持,直接登录受害者账号 |
| 键盘记录 | 记录账号密码 |
| 钓鱼 | 伪造登录页骗密码 |
| 篡改页面 | 传播虚假信息 |
| 内网探测 | 浏览器当"跳板"打内网 |
一句话:“五个场景,XSS就不只是’弹框’了——‘存储型XSS=持久后门,最难防’。”
附录八:文件上传绕过思路(教学)
| 绕过点 | 手段 |
|---|---|
| 扩展名黑名单 | 大小写/双写/截断(历史手法) |
| MIME校验 | 改Content-Type |
| 内容校验 | 图片马+包含 |
| 前端校验 | 绕过前端直接发包 |
一句话:“四类绕过思路,核心是’找校验最弱的一环’——‘修复就往死里做白名单+禁执行目录’。”
附录九:Web安全·每日复盘三问
睡前问自己三句:
- 今天练的漏洞,原理能讲清吗?
- 这个漏洞的修复,知道怎么做吗?
- 靶场里有踩过什么坑、记下来了吗?
一句话:“三问复盘,Web安全就’天天进步’——原理、修复、踩坑,三样都要记。”
附录十:最后的最后
再送一份"行动清单":
- 今天:搭好靶场(DVWA/pikachu)(自建)
- 本周:复现 SQL 注入+XSS 两类漏洞
- 本月:十大漏洞逐个过一遍,输出漏洞笔记
- 本季:完整渗透一个靶场站点(自建)
想系统学习网络安全、拿下 Web 安全的——评论区扣"1",或私信老师咨询课程详情。