浅析常见WEB安全漏洞及其防御措施
字数 1462 2025-08-18 11:35:36
Web安全漏洞详解与防御措施
一、背景概述
Web系统是网络攻防中的主要目标,攻击者通常通过Web打点获取边界服务器权限,再实施内网横向渗透。由于Web系统涉及大量用户数据和敏感信息,一旦遭受攻击可能导致数据泄露、服务中断等严重后果。
二、SQL注入漏洞
1. 漏洞简介
SQL注入漏洞是由于应用程序未能充分验证和过滤用户输入,导致攻击者能够注入恶意SQL代码执行未经授权的数据库操作。
根本成因:后台对用户输入参数未进行处理,直接代入SQL语句执行。
常见危害:
- 数据库信息泄露
- 添加系统账号
- 读写文件获取Webshell
2. 漏洞分类
2.1 基于获取信息方式分类
有回显的注入:
- 联合查询注入:利用UNION操作符合并恶意查询与原始查询
-- 查数据库中的表 select group_concat(table_name) from information_schema.tables where table_schema=database() -- 查指定表的字段 select group_concat(column_name) from information_schema.columns where table_name='students' -- 查指定字段的值 select username from students - 基于报错的注入:通过触发SQL错误从错误消息收集信息
无回显的注入:
- 基于时间的盲注:利用延迟函数判断查询是否成功
1' and if(substr(({payload}),{i},1)='{j}',sleep(5),1)--+ - 基于布尔的盲注:利用布尔逻辑判断查询结果
1' and if(substr(({payload}),{i},1)='{j}')--+
其他类型注入:
- 堆叠注入:一次注入中执行多个SQL查询
- 二次注入:恶意输入先存储后触发
- 宽字节注入:利用多字节字符集绕过过滤
3. 防御策略
- 输入参数过滤:白名单机制验证输入
- 参数化查询:使用Prepared Statements
- 最小权限原则:限制数据库用户权限
三、XSS漏洞
1. 漏洞简介
XSS(跨站脚本)漏洞是由于应用程序未能过滤用户输入,导致恶意脚本注入到Web页面并在用户浏览器执行。
常见危害:
- 窃取Cookie
- JS恶意挖矿
- 广告刷流量
- XSS蠕虫
2. 漏洞分类
-
反射型XSS:
- 恶意脚本通过请求注入并被反射回页面
- 需要诱使用户点击恶意链接
-
存储型XSS:
- 恶意脚本存储到服务器数据库
- 用户访问页面即触发
-
DOM型XSS:
- 通过修改DOM结构触发
- 不经过服务端交互
3. 防御策略
- 输入过滤:删除危险标签和字符
- 输出编码:HTML/JS/CSS编码输出
- 内容安全策略(CSP):限制内容来源
- HttpOnly和Secure标志:保护Cookie安全
四、文件上传漏洞
1. 漏洞简介
由于未验证上传文件的类型、大小和位置,导致攻击者可上传恶意文件。
常见危害:
- 恶意文件执行(WebShell)
- 拒绝服务攻击
- 恶意文件传播
- 敏感数据泄漏
2. 防御策略
- 文件类型白名单:限制允许上传的类型
- 文件大小限制:防止资源耗尽
- 文件名随机化:防止覆盖攻击
- 隔离上传文件:限制执行权限
五、CSRF漏洞
1. 漏洞简介
CSRF(跨站请求伪造)利用已验证的会话执行未授权操作。
与XSS区别:
- XSS窃取凭证,CSRF借用凭证
- 都在客户端执行但目的不同
2. 防御策略
- CSRF令牌:随机令牌验证请求
- Referer检查:验证请求来源
- 同源策略:限制跨域请求
- 图形验证码:敏感操作验证
六、SSRF漏洞
1. 漏洞简介
SSRF(服务端请求伪造)使服务器发起与应用程序有关的请求。
常见利用:
- 读取本地文件(
file:///etc/passwd) - 内网端口扫描(
dict://127.0.0.1:22)
2. 防御策略
- 输入验证和白名单:限制允许的URL/IP
- 禁用危险协议:如file/dict/gopher
- 限制重定向:防止绕过检测
- 网络隔离:限制内网访问权限
七、总结
Web安全核心是输入输出问题:
- 非法输入未经严格处理
- 随意输出导致安全问题
防御关键:
- 所有输入都视为有害
- 输出前必须编码过滤
- 最小权限原则
- 多层防御策略