支付系统架构安全:三层架构与API网关设计

支付系统的架构安全,说白了就是要把钱袋子看住。我做了这么多年支付安全,见过太多因为架构设计不合理导致的漏洞。今天咱们聊聊三层架构、API网关和微服务认证这几个核心点。

一、三层架构:前端、业务、清算

支付系统为什么非要分成三层?你想想看,如果把所有逻辑都揉在一起,出问题的时候排查起来有多痛苦。我在项目中遇到过一家公司,前端直接连数据库,结果一次SQL注入把整个用户表都拖走了...

1. 前端层(展示层)

  • 只负责页面渲染和用户交互
  • 绝对不能包含业务逻辑
  • 敏感数据(如卡号)要做脱敏处理
我的习惯:前端只展示后4位卡号,完整卡号永远不落地到浏览器。曾经有个项目因为前端缓存了完整卡号,被XSS攻击全量泄露,教训深刻。

2. 业务层(核心处理层)

  • 处理订单、支付、退款等核心逻辑
  • 做参数校验、权限检查
  • 调用清算层接口

业务层是攻击者的主要目标。我记得有一次渗透测试,发现业务层没有做金额校验,攻击者把0.01元的订单改成10000元提交...嗯,这种低级错误其实很常见。

3. 清算层(资金结算层)

  • 负责资金划拨、对账、记账
  • 必须保证事务一致性
  • 操作日志要完整可追溯
避坑指南:我曾经见过清算层直接暴露内网接口,没有任何鉴权。攻击者通过SSRF漏洞直接调用清算接口转账。记住:清算层必须做双向认证,且只能被业务层调用。

二、API网关安全设计

API网关是支付系统的第一道防线。我习惯把它比作机场的安检口——所有请求都得过一遍。

核心安全功能

功能 说明 我的建议
身份认证 校验API Key、Token 使用JWT,设置短有效期
限流熔断 防止DDoS和暴力破解 按用户+IP双重限流
参数校验 过滤恶意输入 白名单策略,拒绝未知参数
日志审计 记录所有请求和响应 敏感字段脱敏后存储
关键点:API网关不要做业务逻辑判断!它只负责安全检查和路由转发。我见过有人把支付金额校验写在网关里,结果改个规则还得重启网关,太蠢了。

网关安全配置示例

# API网关安全配置(伪代码)
gateway:
  auth:
    type: jwt
    secret: ${JWT_SECRET}
    expire: 15m  # 15分钟过期
  rate_limit:
    per_user: 100/min
    per_ip: 1000/min
  whitelist:
    - /api/v1/health
    - /api/v1/callback
  blacklist:
    - /api/v1/admin  # 内部接口不对外暴露

三、微服务间认证与鉴权

微服务架构下,服务之间的调用不能裸奔。我刚开始做微服务时,觉得内网环境安全,服务间直接HTTP调用...直到有一次内网被横向渗透,所有服务都被扫了一遍。

认证方式对比

方式 安全性 性能 适用场景
JWT 服务间轻量级调用
mTLS 敏感数据传输
API Key 内部非敏感服务
我的推荐:核心支付链路用mTLS,非核心服务用JWT。曾经有个项目全部用API Key,结果Key泄露后攻击者直接调用了所有服务接口。

微服务鉴权流程

// 服务间调用鉴权示例
public class ServiceAuthFilter {
    public boolean authenticate(Request request) {
        // 1. 校验JWT签名
        if (!jwtService.verify(request.getToken())) {
            return false;
        }
        // 2. 检查服务权限
        if (!permissionService.hasAccess(
            request.getSourceService(),
            request.getTargetService()
        )) {
            return false;
        }
        // 3. 记录审计日志
        auditLogService.log(request);
        return true;
    }
}

四、架构安全知识体系

下面这张图是我总结的支付系统架构安全核心逻辑,你可以对照着检查自己的系统。

支付系统架构安全核心逻辑 前端层 展示/交互/脱敏 业务层 校验/权限/核心逻辑 清算层 资金/对账/事务 API网关 身份认证 限流熔断 参数校验 日志审计 路由转发 黑白名单 订单服务 支付服务 用户服务 清算服务 微服务间认证与鉴权 JWT / mTLS / API Key + 权限校验 + 审计日志 核心原则:分层隔离、网关统一管控、服务间最小权限 数据流:用户 → 前端 → API网关 → 业务层 → 清算层
最后提醒:架构安全不是配几个参数就完事了。我每年都会做一次架构安全评审,检查各层之间的隔离是否到位、网关规则是否过时、微服务间的认证是否被绕过。安全是动态的,别想着一次配置终身无忧。

公众号:蓝海资料掘金营,微信deep3321