Web 安全领域常见攻击类型

在 Web 安全领域,攻击方式多种多样,以下是最常见且危害性较高的 15 种攻击类型,按照攻击原理、危害和防御措施分类整理:


一、注入类攻击

1. SQL 注入(SQL Injection)

  • 原理:通过用户输入拼接 SQL 语句,篡改数据库查询逻辑。

    sql

    复制

    java 复制代码
    -- 用户输入: ' OR '1'='1
    SELECT * FROM users WHERE username = '' OR '1'='1' AND password = '...'
  • 危害:数据泄露、数据篡改、服务器沦陷。

  • 防御

    • 使用参数化查询(Prepared Statements)
    • ORM 框架(如 Sequelize、TypeORM)
    • 最小化数据库权限

2. XSS(跨站脚本攻击)

  • 原理:注入恶意脚本到网页中,在用户浏览器执行。

    html

    复制

    xml 复制代码
    <!-- 用户输入: <script>alert('XSS')</script> -->
    <div>{{ user_input }}</div>  <!-- 未转义时触发 -->

    运行 HTML

  • 分类

    • 存储型(恶意脚本存数据库)
    • 反射型(通过 URL 参数触发)
    • DOM 型(纯前端漏洞)
  • 防御

    • 输入输出转义(如 DOMPurify 库)
    • CSP 安全策略(Content-Security-Policy
    • HttpOnly Cookie(防止窃取会话)

3. 命令注入(Command Injection)

  • 原理:通过系统命令拼接执行恶意指令。

    bash

    复制

    makefile 复制代码
    # 用户输入: ; rm -rf /
    ping $(user_input)
  • 防御

    • 避免直接拼接命令(使用 API 替代)
    • 白名单校验输入

二、会话与身份认证攻击

4. CSRF(跨站请求伪造)

  • 原理:诱导用户点击链接,以用户身份发起恶意请求。

    html

    复制

    arduino 复制代码
    <img src="https://bank.com/transfer?to=hacker&amount=10000" width="0" height="0">

    运行 HTML

  • 防御

    • CSRF Token(同步令牌模式)
    • SameSite Cookie 属性
    • 关键操作需二次认证

5. 会话固定(Session Fixation)

  • 原理:攻击者强制用户使用已知的 Session ID。

  • 防御

    • 登录后重置 Session ID
    • 绑定用户 IP/User-Agent

6. JWT 篡改

  • 原理:修改 JWT 的 payload 或伪造签名。

  • 防御

    • 使用强密钥(HS256 或 RS256)
    • 校验签名和过期时间
    • 敏感操作限制 Token 有效期

三、前端特定攻击

7. 点击劫持(Clickjacking)

  • 原理:透明 iframe 覆盖按钮诱导点击。

    html

    复制

    css 复制代码
    <iframe src="malicious-site" style="opacity: 0; position: fixed;"></iframe>

    运行 HTML

  • 防御

    • HTTP 头 X-Frame-Options: DENY
    • CSP 的 frame-ancestors 指令

8. CORS 滥用

  • 原理:利用宽松的 CORS 配置窃取数据。

  • 防御

    • 限制 Access-Control-Allow-Origin 为具体域名
    • 避免使用 * 通配符

9. WebSocket 劫持

  • 原理:窃取或篡改 WebSocket 通信。

  • 防御

    • 使用 wss://(WebSocket over TLS)
    • 认证握手阶段

四、协议与配置漏洞

10. 中间人攻击(MITM)

  • 原理:拦截未加密的 HTTP 流量。

  • 防御

    • 全站 HTTPS(HSTS 强制跳转)
    • 证书钉扎(Certificate Pinning)

11. DNS 劫持

  • 原理:篡改 DNS 解析结果。

  • 防御

    • 使用 HTTPDNS
    • 监控域名解析异常

12. 不安全的反序列化

  • 原理:篡改序列化数据(如 JSON、XML)触发远程代码执行。

  • 防御

    • 校验数据完整性(如签名)
    • 避免直接反序列化为对象

五、其他高风险攻击

13. SSRF(服务端请求伪造)

  • 原理:诱骗服务器访问内部资源。

    复制

    bash 复制代码
    https://api.example.com/fetch?url=http://169.254.169.254/latest/meta-data
  • 防御

    • 过滤请求目标(禁用内网 IP)
    • 使用白名单域名

14. 文件上传漏洞

  • 原理 :上传恶意文件(如 .php.jsp)获取服务器权限。

  • 防御

    • 校验文件类型(魔数检测,非扩展名)
    • 存储到非 Web 目录

15. DoS/DDoS

  • 原理:耗尽服务器资源(如 CC 攻击、Slowloris)。

  • 防御

    • WAF(Web 应用防火墙)
    • 限流策略(如 Nginx 的 limit_req

防御体系全景图

mermaid

复制

css 复制代码
graph TD
A[输入验证] --> B[参数化查询]
A --> C[XSS 转义]
D[输出编码] --> E[CSP 策略]
F[会话安全] --> G[CSRF Token]
F --> H[HttpOnly Cookie]
I[HTTPS] --> J[HSTS]
K[最小权限] --> L[数据库只读账户]

关键工具推荐

工具 用途
OWASP ZAP 自动化渗透测试
Burp Suite 手动安全测试
Snyk 依赖库漏洞扫描
Nginx ModSecurity WAF 防护

总结

  • 开发阶段:遵循 OWASP Top 10 防护指南,代码审查时重点关注敏感操作。
  • 部署阶段:启用安全头(如 CSP、HSTS)、定期更新依赖库。
  • 监控阶段:日志审计 + 实时告警(如异常登录尝试)。

安全是一个持续的过程,没有 100% 的安全,只有不断提高的攻击成本

相关推荐
Danny_FD几秒前
Canvas的应用与实践
前端·javascript
_请输入用户名3 分钟前
husky 切换 simlple-git-hook 失效解决方法
前端
前端九哥3 分钟前
🚀Vue 3 hooks 每次使用都是新建一个实例?一文彻底搞懂!🎉
前端·vue.js
盏灯3 分钟前
尤雨溪搞响应式为什么要从 Object.defineProperty 换成 Proxy❓
前端·vue.js
爱上大树的小猪3 分钟前
【前端样式】使用CSS Grid打造完美响应式卡片布局:auto-fill与minmax深度指南
前端·css·面试
代码小学僧4 分钟前
🤗 赛博佛祖 Cloudflare 初体验托管自定义域名与无限邮箱注册
前端·serverless·云计算
晴殇i4 分钟前
一行代码解决深拷贝问题,JavaScript新特性解析
前端
天天扭码15 分钟前
零基础入门 | 超详细讲解 | 小白也能看懂的爬虫程序——爬取微博热搜榜
前端·爬虫·cursor
小兔崽子去哪了31 分钟前
微信小程序入门
前端·vue.js·微信小程序
独立开阀者_FwtCoder34 分钟前
# 白嫖千刀亲测可行——200刀拿下 Cursor、V0、Bolt和Perplexity 等等 1 年会员
前端·javascript·面试