在数字化时代,电商系统作为 “资金与数据的交汇点”,已成为黑客攻击的重点目标。从网络层的 DDoS 攻击、SQL 注入,到应用层的越权访问、数据泄露,各类安全威胁可能导致用户信息被盗、交易资金损失、平台信誉崩塌。单一的安全防护手段(如仅依赖防火墙或仅做权限控制)难以抵御复杂攻击,构建 “多层级、立体化” 的纵深防御体系成为必然选择。
ZKmall 开源商城针对电商场景的安全需求,以 “网络层防火墙” 与 “应用层 Shiro 权限框架” 为核心,打造 “外防入侵、内防越权” 的纵深防御体系:防火墙在网络边界拦截恶意流量,Shiro 在应用内部管控权限边界,两者协同形成从 “网络入口” 到 “业务操作” 的全链路安全防护。本文将从电商系统的核心安全威胁出发,拆解 ZKmall 的防火墙配置逻辑与 Shiro 权限管控实践,为电商平台构建纵深安全防御提供技术参考。
一、电商系统的 “多维度安全威胁”:为何需要纵深防御?
电商系统的业务特性(涉及支付、用户隐私、交易数据)使其面临多层次安全威胁,这些威胁贯穿 “网络传输 - 应用访问 - 数据操作” 全流程,单一防护手段难以全面覆盖:
1. 网络层威胁:恶意流量突破边界入侵
网络层是电商系统的 “第一道外部防线”,常见威胁集中在 “流量攻击” 与 “非法访问”:
- DDoS 攻击:攻击者通过海量虚假流量(如 SYN Flood、UDP Flood)占用服务器带宽与资源,导致电商网站无法正常访问。某电商平台曾在双 11 期间遭遇 DDoS 攻击,峰值流量达 100Gbps,网站瘫痪 2 小时,直接损失超千万元订单;
- 端口扫描与暴力破解:攻击者通过端口扫描工具(如 Nmap)探测服务器开放端口,对 SSH、数据库等端口发起暴力破解(尝试弱密码组合),若成功入侵,可直接控制服务器,窃取数据库中的用户支付信息与交易数据;
- IP 地址欺骗:攻击者伪造合法 IP 地址(如平台合作物流的 IP),绕过基础访问限制,发起 SQL 注入、文件上传等攻击,篡改订单数据或植入恶意代码。
这类威胁的核心是 “突破网络边界”,若仅依赖应用层防护,恶意流量已进入系统内部,防护难度大幅增加。
2. 应用层威胁:权限漏洞导致数据泄露与越权
应用层是电商业务的核心载体,威胁多源于 “权限管控缺失” 与 “业务逻辑漏洞”:
- 水平越权:普通用户通过修改请求参数(如将user_id=1001改为user_id=1002),访问其他用户的订单详情、收货地址、支付记录,违反《个人信息保护法》;
- 垂直越权:低权限角色(如普通员工)通过 URL 重写、参数篡改,获取管理员权限(如访问/admin/order/list接口),修改商品价格、删除交易记录;
- 权限绕过:攻击者利用应用逻辑漏洞(如未校验用户登录状态),直接访问需授权的接口(如未登录即可调用/api/pay/cancel接口取消他人订单),干扰正常交易。
某电商平台曾因垂直越权漏洞,被攻击者获取管理员权限,批量修改商品价格为 1 元,短时间内产生数万笔异常订单,平台不得不承担全额损失。
3. 数据层威胁:敏感信息未保护导致泄露
电商系统存储的 “用户手机号、银行卡号、交易流水” 等敏感数据,是攻击者的主要目标:
- 数据库入侵:攻击者通过 SQL 注入、弱密码等方式入侵数据库,导出全量用户数据与交易记录,在暗网出售牟利;
- 数据传输泄露:用户在登录、支付时,敏感数据通过 HTTP 协议明文传输,被黑客拦截窃取;
- 内部数据泄露:平台员工利用权限下载敏感数据(如客户名单、商家交易流水),出售给竞品或用于电信诈骗。
这些威胁的核心症结在于 “缺乏分层防护”—— 若网络层未拦截恶意流量,应用层未管控权限,数据层未加密保护,任何一个环节失守都会导致安全防线崩溃。ZKmall 的 “防火墙 + Shiro” 纵深防御,正是通过 “多层拦截、层层递进”,最大化降低安全风险。
二、防火墙:ZKmall 的网络层安全屏障
ZKmall 采用 “硬件防火墙 + 软件防火墙” 结合的部署方案,在网络边界构建 “流量过滤、访问控制、攻击拦截” 的防护体系,将大部分恶意流量阻挡在系统外部,减轻应用层防护压力。
1. 流量过滤:精准拦截恶意请求
防火墙通过 “规则匹配 + 行为分析”,对进出系统的网络流量进行精细化过滤,拦截异常请求:
- 黑名单:基于威胁情报(如已知攻击 IP 库、暗网 IP 库),配置 IP 黑名单,直接拦截来自恶意 IP 的所有请求(如频繁发起端口扫描、暴力破解的 IP);
- 白名单:仅允许合作方 IP(如支付网关 IP、物流系统 IP)访问特定接口(如/api/pay/callback支付回调接口),禁止其他 IP 访问,降低接口被攻击风险;
- 仅开放业务必需端口(如 HTTP 80、HTTPS 443、数据库 3306),关闭冗余端口(如 FTP 21、Telnet 23),减少攻击入口;
- 对数据库端口(3306)设置 “仅允许应用服务器 IP 访问”,禁止公网直接连接,防止数据库被远程入侵;
- 禁止 HTTP 协议访问,强制所有流量通过 HTTPS 加密传输,防止数据明文泄露;
- 拦截异常协议请求(如 ICMP 协议的大量 ping 请求、UDP 协议的异常数据包),避免 DDoS 攻击占用带宽。
例如,ZKmall 的防火墙检测到某 IP 在 1 分钟内发起 50 次 SSH 登录请求(暴力破解特征),立即将该 IP 加入黑名单,24 小时内禁止访问,有效阻断破解尝试。
2. 攻击防御:抵御常见网络攻击
防火墙内置 “攻击检测引擎”,针对电商系统高频遭遇的网络攻击,提供专项防御能力:
- 采用 “流量清洗” 技术,识别并过滤 DDoS 攻击流量(如 SYN Flood、HTTP Flood),仅将正常用户流量转发至应用服务器;
- 配置 “弹性带宽”,在遭遇大流量 DDoS 攻击时,自动扩容带宽资源,避免服务器因带宽耗尽而瘫痪;
- 对高频请求(如 1 分钟内同一 IP 发起 100 次商品查询请求)进行限流,防止恶意爬虫或 CC 攻击(模拟正常用户发起大量请求)占用系统资源;
- 防火墙分析 HTTP 请求参数,识别 SQL 注入特征(如包含union select、or 1=1等关键字),直接拦截该请求;
- 对 URL 参数、表单数据进行编码转换,避免特殊字符(如'、;)触发 SQL 注入漏洞;
- 检测请求中是否包含 XSS 脚本(如<script>、alert()标签),对恶意脚本进行过滤或转义,防止攻击者通过 XSS 获取用户 Cookie、会话 ID。
某攻击者尝试向 ZKmall 的商品评价接口注入 SQL 语句(comment=1' or 1=1 --),防火墙检测到 SQL 注入特征后,立即拦截请求并记录攻击日志,未对应用系统造成影响。
3. 访问控制:细化网络访问策略
防火墙根据 “访问源、访问目标、访问时间”,制定精细化访问策略,确保 “仅合法流量能访问对应资源”:
- 普通用户仅能访问前端业务接口(如/api/product/list、/api/order/create),禁止访问后端管理接口(如/admin/*);
- 数据库备份接口(如/api/backup/db)仅允许在凌晨 2-4 点(业务低峰期)访问,其他时间禁止调用,降低数据泄露风险;
- 财务结算接口(如/api/settlement/calculate)仅允许工作日 9-18 点访问,非工作时间访问需额外审批;
- 对 “文件上传接口”(如/api/product/upload)限制上传文件类型(仅允许 jpg、png 图片)与大小(不超过 5MB),防止攻击者上传恶意脚本文件(如.php、.jsp 文件)。
通过访问控制,ZKmall 实现 “网络层的权限隔离”,即使应用层出现权限漏洞,攻击者也无法通过公网访问高敏感接口,形成 “双重保险”。
三、Shiro 权限框架:ZKmall 的应用层纵深防护
Apache Shiro 作为 Java 生态中成熟的权限框架,具备 “身份认证、权限授权、会话管理” 三大核心能力,是 ZKmall 应用层安全的 “核心防线”。Shiro 在防火墙拦截外部恶意流量的基础上,进一步管控应用内部的权限访问,防止越权操作与数据泄露。
1. 身份认证:确保 “登录的是可信用户”
身份认证是应用层安全的 “第一道门槛”,Shiro 通过 “多因素认证 + 会话管理”,确保登录用户的真实性:
- 普通用户登录:采用 “账号密码 + 手机验证码” 双因素认证,即使密码泄露,攻击者也无法获取验证码完成登录;
- 管理员登录:额外增加 “人脸识别” 或 “硬件令牌” 认证,防止管理员账号被盗用(如通过钓鱼网站获取密码);
- 用户登录成功后,Shiro 生成唯一会话 ID,存储在服务器端,前端通过 Cookie 或 JWT 令牌携带会话信息,避免会话 ID 泄露导致会话劫持;
- 配置会话有效期(普通用户 2 小时,管理员 30 分钟),超时自动登出;若检测到 “异地登录”(如用户常用登录地为北京,突然在上海登录),立即强制登出原会话并触发告警;
- 通过 Shiro 的 “计数器缓存”,限制同一账号的登录尝试次数(如 1 小时内最多 5 次失败登录),超过次数则锁定账号 1 小时,防止暴力破解。
某攻击者通过钓鱼获取用户账号密码,尝试登录 ZKmall 时,因未获取手机验证码,无法完成双因素认证;多次尝试失败后,账号被临时锁定,攻击最终失败。
2. 权限授权:构建 “最小权限” 的访问边界
Shiro 基于 “RBAC(基于角色的访问控制)” 模型,为电商系统的不同角色分配精细化权限,确保 “用户仅能访问完成工作必需的资源”:
- 普通用户(role_user):仅拥有 “浏览商品、创建订单、查看个人订单” 权限,权限标识为product:view、order:create、order:view:own;
- 商家管理员(role_merchant_admin):拥有 “管理本店商品、查看本店订单、处理本店退款” 权限,权限标识为product:manage:merchant、order:view:merchant、refund:handle:merchant;
- 平台管理员(role_platform_admin):拥有 “审核商家、管理平台活动、查看全量数据” 权限,权限标识为merchant:audit、activity:manage、data:view:all;
- URL 级校验:通过 Shiro 的FilterChain,对不同 URL 配置权限要求(如/api/order/my/**需role_user角色,/api/admin/**需role_platform_admin角色),未授权用户访问时直接跳转至登录页;
- 方法级校验:在核心业务方法上添加 Shiro 注解(如@RequiresPermissions("order:create")),确保只有拥有对应权限的用户才能调用该方法;
- 数据级校验:通过 Shiro 的 “数据权限过滤”,确保用户仅能访问自己有权限的数据 —— 如商家管理员查询订单时,Shiro 自动添加 “merchant_id = 当前商家 ID” 的过滤条件,防止查看其他商家订单;
- 支持 “临时权限” 分配(如大促期间给商家操作员开放 “临时批量改价” 权限,有效期 3 天),权限到期后 Shiro 自动回收;
- 员工离职或角色调整时,通过 Shiro 管理后台快速删除或修改权限,避免 “权限残留” 导致安全风险。
ZKmall 的某商家操作员尝试访问平台管理员的 “商家审核接口”(/api/admin/merchant/audit),Shiro 检测到该用户仅拥有role_merchant_admin角色,无merchant:audit权限,直接拦截请求并返回 “无权限访问” 提示,有效防止垂直越权。
3. 安全防护:补充应用层安全细节
Shiro 除核心的 “认证与授权” 外,还提供多项安全防护功能,弥补应用层的安全漏洞:
- 用户密码不直接存储明文,通过 Shiro 的SimpleHash工具,采用 “MD5 + 盐值” 加密算法存储(盐值为随机字符串,每个用户盐值不同),即使数据库被入侵,攻击者也无法破解密码;
- 通过 Shiro 的 “数据脱敏拦截器”,对返回给前端的敏感数据进行脱敏处理(如手机号显示为138****8888,银行卡号显示为**** **** **** 1234),防止数据在前端展示时泄露;
- 所有权限相关操作(如登录、权限分配、越权访问尝试)均通过 Shiro 记录日志,包含 “操作人、操作时间、操作内容、IP 地址”,日志不可篡改,便于安全事件追溯与审计。
例如,某员工尝试越权访问其他商家的订单数据,Shiro 拦截操作后,记录 “用户 ID=10086,操作时间 = 2024-07-01 15:30,操作内容 = 尝试访问 merchant_id=1001 的订单列表,结果 = 无权限” 的日志,管理员通过日志快速定位异常操作,及时处理风险。
四、防火墙与 Shiro 的协同防御:构建纵深安全闭环
ZKmall 的 “防火墙 + Shiro” 并非独立工作,而是通过 “数据互通、策略协同”,形成从 “网络层” 到 “应用层” 的纵深防御闭环,1+1>2 的安全效果:
1. 数据互通:攻击情报共享
- 防火墙将拦截的 “恶意 IP、攻击特征” 同步至 Shiro 的 “风险用户库”,Shiro 对来自这些 IP 的登录请求、权限操作进行额外校验(如增加二次验证码、缩短会话有效期);
- Shiro 将 “越权访问、异常登录” 等应用层安全事件(如某用户频繁尝试访问他人订单)同步至防火墙,防火墙将该用户 IP 加入临时黑名单,限制其网络访问频率,从源头减少攻击尝试。
某 IP 通过防火墙的基础过滤后,在应用层尝试多次越权访问,Shiro 记录该异常行为并同步至防火墙,防火墙立即对该 IP 实施 “1 小时内仅允许 10 次 HTTP 请求” 的限制,有效遏制后续攻击。
2. 策略协同:安全规则联动
- 当防火墙检测到某 IP 发起 DDoS 攻击时,除拦截攻击流量外,还会通知 Shiro “暂时冻结该 IP 关联的所有用户会话”,防止攻击者通过合法账号登录系统;
- Shiro 在检测到 “管理员账号异地登录” 时,除强制登出会话外,还会通知防火墙 “临时禁止该登录 IP 访问管理后台相关端口”,避免攻击者再次尝试登录。
3. 分层防御:层层递进拦截
- 网络层:防火墙拦截恶意 IP、DDoS 攻击、SQL 注入等外部威胁,过滤 80% 以上的异常流量;
- 应用层:Shiro 对通过防火墙的流量进行 “身份认证 + 权限校验”,拦截越权访问、虚假登录等内部威胁;
- 数据层:Shiro 结合加密技术,对敏感数据进行加密存储与脱敏展示,确保数据即使被泄露也无法被利用。
通过分层防御,ZKmall 的安全事件发生率下降 95%,其中网络层拦截占比 82%,应用层拦截占比 18%,形成 “外部威胁少进入、内部威胁难扩散” 的良好安全态势。