Skip to content

Web安全

一、Web安全基础概念

1.1 Web安全定义

Web安全是指保护Web应用系统及其数据免受未经授权的访问、篡改、破坏,确保系统的可用性、完整性和保密性的技术体系。核心目标是防范针对Web应用层的攻击。

1.2 重要性

  • 业务连续性:防止恶意攻击导致服务中断
  • 数据安全:保护用户隐私、交易数据等敏感信息
  • 合规要求:满足等保2.0、PCI-DSS等安全规范
  • 企业声誉:避免数据泄露引发的信任危机

1.3 常见安全威胁分类

分类特点典型攻击方式
主动攻击篡改数据或伪造请求SQL注入、XSS、CSRF
被动攻击窃取信息但不修改数据嗅探、信息泄露
物理攻击针对服务器硬件的攻击物理破坏、设备盗窃
逻辑攻击利用业务逻辑漏洞越权访问、支付漏洞

二、常见Web攻击类型详解

2.1 SQL注入(SQL Injection)

2.1.1 攻击原理

通过在输入参数中注入恶意SQL语句,篡改数据库查询逻辑,实现数据窃取、篡改或服务器控制。

2.1.2 攻击方式

  • 联合查询注入:利用UNION SELECT拼接恶意语句
  • 报错注入:通过UPDATEXML等函数触发错误回显数据
  • 盲注:通过布尔逻辑或时间延迟判断数据存在性

2.1.3 攻击实例

php
// 漏洞代码
$id = $_GET['id'];
$sql = "SELECT * FROM users WHERE id = $id";
// 恶意输入:1' AND 1=2 UNION SELECT username,password FROM admin--

2.1.4 防御方法

  1. 使用参数化查询(Prepared Statements)
  2. 对输入进行严格过滤(正则匹配合法字符)
  3. 最小化数据库账户权限
  4. 启用Web应用防火墙(WAF)

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

2.2.1 攻击原理

在Web页面中注入恶意脚本,当用户浏览时执行,窃取Cookie、会话令牌等敏感信息。

2.2.2 类型

  • 反射型XSS:恶意代码嵌入在URL中,即时执行
  • 存储型XSS:恶意代码存储在服务器数据库,长期有效
  • DOM型XSS:通过修改DOM树触发攻击

2.2.3 攻击实例

html
<!-- 反射型攻击链接 -->
http://example.com/search?keyword=<script>alert('xss');</script>

2.2.4 防御方法

  1. 对用户输入进行HTML转义(<转义为<)
  2. 启用Content Security Policy(CSP)头
  3. 使用XSS过滤器组件
  4. 禁止危险标签和属性(如onclick、eval)

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

2.3.1 攻击原理

利用用户已登录的会话,伪造受信任站点的请求,执行非预期操作(如转账、修改密码)。

2.3.2 攻击流程

  1. 用户登录信任站点A并保持会话
  2. 访问恶意站点B,B向A发送伪造请求
  3. A服务器验证会话有效并执行操作

2.3.3 防御方法

  1. 添加CSRF令牌(Token)并验证
  2. 检查Referer头和Origin头
  3. 使用SameSite Cookie属性
  4. 双重提交Cookie验证

2.4 文件上传漏洞

2.4.1 攻击原理

允许用户上传恶意文件(如PHP木马、可执行文件),通过Web服务器解析执行,获取服务器控制权限。

2.4.2 攻击方式

  • 绕过文件类型检查(修改扩展名、利用.htaccess文件)
  • 路径 traversal(上传到可执行目录)
  • 解析漏洞(IIS 6.0目录解析漏洞)

2.4.3 防御方法

  1. 白名单校验文件扩展名
  2. 服务器端重命名上传文件
  3. 限制上传目录执行权限
  4. 进行文件内容检测(如病毒扫描)

2.5 命令注入(Command Injection)

2.5.1 攻击原理

通过拼接操作系统命令,执行恶意指令(如rm -rf /net user),获取服务器控制权。

2.5.2 攻击实例

php
// 漏洞代码
$ip = $_GET['ip'];
system("ping -c 4 " . $ip);
// 恶意输入:127.0.0.1 && rm -rf /var/www/html

2.5.3 防御方法

  1. 禁止使用危险函数(system、exec、shell_exec)
  2. 对输入进行严格过滤(禁止特殊字符:&、|、;、`)
  3. 使用安全的API替代直接执行命令

2.6 SSRF(Server-Side Request Forgery)

2.6.1 攻击原理

利用服务器端发起任意HTTP请求的功能,伪造请求访问内部网络资源(如Redis未授权访问、内网Web服务)。

2.6.2 攻击场景

  • 探测内网存活主机
  • 访问内部API接口
  • 利用file协议读取本地文件

2.6.3 防御方法

  1. 限制请求目标为合法域名
  2. 禁止使用非HTTP(s)协议(file、gopher)
  3. 对URL进行白名单校验
  4. 禁用不必要的HTTP请求功能

2.7 逻辑漏洞

2.7.1 常见类型

  • 越权访问:水平越权(相同权限用户数据互访)、垂直越权(低权限用户访问高权限功能)
  • 竞争条件:多个请求同时处理时引发状态不一致(如秒杀超卖)
  • 支付漏洞:修改订单金额、跳过支付流程

2.7.2 防御方法

  1. 严格执行权限校验(RBAC模型)
  2. 使用事务处理和状态锁机制
  3. 对关键操作进行业务逻辑审计

三、Web安全防御技术

3.1 输入输出过滤

  • 输入过滤:对用户输入进行合法性校验(正则表达式、白名单)
  • 输出编码:对动态生成的HTML/JS/CSS进行转义处理
  • 推荐库:OWASP ESAPI、Apache Commons Text

3.2 身份认证与授权

3.2.1 认证机制

  • 基础认证(Basic Auth)
  • 摘要认证(Digest Auth)
  • Token认证(JWT、OAuth2.0)
  • 双因素认证(2FA)

3.2.2 授权模型

  • ACL(访问控制列表)
  • RBAC(角色-based访问控制)
  • ABAC(属性-based访问控制)

3.3 会话管理

  • 使用安全Cookie属性:Secure、HttpOnly、SameSite
  • 定期更新会话令牌(Session ID)
  • 限制会话超时时间
  • 会话固定攻击防御(登录后重新生成Session ID)

3.4 安全配置

  • 关闭调试模式(禁止显示错误信息)
  • 移除默认文件(如phpinfo.php、test.php)
  • 配置安全头信息:
    X-Content-Type-Options: nosniff
    X-Frame-Options: DENY
    X-XSS-Protection: 1; mode=block

3.5 Web应用防火墙(WAF)

  • 部署方式:硬件WAF、云WAF、软件WAF(ModSecurity)
  • 防护功能:规则匹配、异常检测、流量清洗
  • 规则集:OWASP Core Rule Set (CRS)

3.6 HTTPS加密

  • 采用TLS/SSL协议加密传输
  • 使用强加密套件(TLS 1.3推荐)
  • 部署HSTS(HTTP Strict Transport Security)
  • 定期更新证书(避免过期或弱签名)

练习题

单选题

1. 以下哪种攻击属于SQL注入的变种?

A. XSS攻击 B. 盲注攻击 C. CSRF攻击 D. 文件包含攻击

答案:B
解析:盲注是SQL注入的一种特殊形式,通过逻辑判断或时间延迟获取数据,不直接回显结果。

2. 防御XSS攻击最有效的方法是?

A. 过滤URL参数 B. 对用户输入进行HTML转义 C. 禁用Cookie D. 安装杀毒软件

答案:B
解析:HTML转义可以将恶意脚本标签转换为无害字符,阻止浏览器执行恶意代码。

多选题

1. 以下哪些属于CSRF攻击的防御措施?

A. 使用CSRF Token B. 验证Referer头 C. 启用SameSite Cookie D. 输入参数过滤

答案:ABC
解析:输入参数过滤主要防御注入攻击,CSRF防御需要结合Token、Referer和Cookie属性。

2. 以下哪些属于OWASP Top 10(2021)中的安全风险?

A. 失效的访问控制 B. 不安全的设计 C. 缓冲区溢出 D. 身份认证失效

答案:ABD
解析:缓冲区溢出属于传统二进制漏洞,不在2021版OWASP Top 10中。

判断题

  1. SSRF攻击只能访问公网URL,无法攻击内网资源。( )

答案:×
解析:SSRF可以通过服务器发起内网请求,探测内部IP地址和端口。

  1. 存储型XSS的恶意代码存储在用户浏览器中。( )

答案:×
解析:存储型XSS的恶意代码存储在服务器数据库中,用户访问时从服务器获取并执行。

粤ICP备2025395972号-1