1. 身份认证与授权
常见安全问题
- 弱口令与默认凭证 :系统或组件使用
admin/admin、123456等弱密码,或出厂默认密码未修改,极易被暴力破解。 - 认证绕过:攻击者通过修改请求参数、利用逻辑漏洞(如跳过登录步骤)直接访问受保护资源。
- 会话管理缺陷:会话令牌(Session Token/JWT)生成算法不安全、未设置过期时间、注销后未失效,导致会话劫持。
- 权限控制失效(越权访问) :
-
水平越权 :用户 A 通过修改 ID 访问用户 B 的数据,例如:
/api/user/info?id=1001 改为 id=1002 -
垂直越权 :普通用户访问管理员接口,例如:
/admin/dashboard
-
解决方案
- 强制强密码策略:系统应强制要求密码长度(如至少 12 位)、复杂度(大小写字母、数字、特殊符号组合),并禁止使用常见弱口令。
- 实施多因素认证(MFA):对于敏感操作或高权限账户,必须引入短信验证码、TOTP(如 Google Authenticator)或生物识别作为第二重验证。
- 安全的会话管理 :
- 使用高强度的随机数生成会话 ID。
- 设置合理的会话超时时间(如空闲 30 分钟自动登出)。
- 确保用户登出时,服务端立即销毁会话令牌。
- 基于角色的访问控制(RBAC)与最小权限原则 :
- 在后端代码中对每一个接口请求进行权限校验,不能仅依赖前端隐藏菜单。
- 确保用户只能访问其角色被明确授权的资源。
- 服务账户和数据库账户应遵循最小权限原则,仅授予完成业务所需的最小权限。
2. 数据安全与隐私
常见安全问题
- 明文存储敏感数据:用户密码、身份证号、银行卡号等敏感信息以明文形式存储在数据库中。
- 数据传输未加密:系统内部服务间调用或客户端与服务器通信使用 HTTP 协议,导致数据在传输过程中被窃听或篡改(中间人攻击)。
- 密钥硬编码:加密密钥、API 密钥、数据库密码等敏感配置直接写死在代码库中。
解决方案
- 数据加密存储 :
- 密码:必须使用加盐哈希算法(如 bcrypt, Argon2, PBKDF2)存储,严禁明文或可逆加密。
- 敏感个人信息(PII):使用强加密算法(如 AES-256)进行加密存储。
- 全链路传输加密 :
- 强制使用 HTTPS(TLS 1.2/1.3)进行所有外部通信。
- 内部微服务调用也应启用 mTLS(双向认证)或在内网建立加密通道。
- 密钥管理系统(KMS) :
- 严禁将密钥硬编码在代码中。
- 使用专业的密钥管理服务(如 AWS KMS, HashiCorp Vault)或环境变量来管理密钥,并定期轮换密钥。
3. 输入验证与注入攻击
常见安全问题
- SQL 注入:直接拼接用户输入构建 SQL 语句,攻击者可窃取或破坏数据库数据。
- 跨站脚本攻击(XSS):未过滤用户输入中的恶意脚本,导致脚本在其他用户的浏览器中执行。
- 命令注入:系统直接调用系统 Shell 执行包含用户输入的命令。
- 反序列化漏洞:不信任的数据被反序列化,导致远程代码执行。
解决方案
- 参数化查询(预编译语句):所有数据库操作必须使用参数化查询或 ORM 框架提供的安全方法,杜绝字符串拼接 SQL。
- 严格的输入验证 :
- 对所有用户输入(URL 参数、表单、API 请求体)进行白名单验证(类型、长度、格式)。
- 拒绝包含非法字符的输入。
- 输出编码:在将数据渲染到前端页面时,根据上下文(HTML, JavaScript, CSS)进行相应的转义或编码。
- 使用安全库:使用成熟的反序列化库,并严格限制可反序列化的类。
4. 基础设施与网络安全
常见安全问题
- 高危端口暴露:将数据库端口(3306, 5432)、远程管理端口(22, 3389)直接暴露在公网。
- 未修补的漏洞("两高一弱"):操作系统、中间件、依赖库存在已知的高危漏洞(如 Log4j2)未及时修复。
- 缺乏网络隔离:所有服务部署在同一个扁平网络中,一旦一台服务器被攻破,攻击者可横向移动控制整个内网。
解决方案
- 最小化攻击面 :
- 关闭所有非必要的端口和服务。
- 仅开放业务必需的端口(如 80/443),管理端口仅允许通过堡垒机或 VPN 访问。
- 网络分段与隔离 :
- 使用 VPC、子网、安全组将系统划分为 DMZ 区(对外服务区)、应用区、数据区。
- 数据库等核心资产严禁直接暴露在公网。
- 漏洞管理与补丁更新 :
- 建立自动化的依赖扫描机制(如使用 SCA 工具)。
- 定期更新操作系统和软件补丁,建立补丁基线。
- 部署防火墙与入侵检测系统(IDS/IPS):在边界部署防火墙,配置 WAF(Web 应用防火墙)拦截常见 Web 攻击。
5. 恶意软件与终端安全
常见安全问题
- 勒索软件:通过钓鱼邮件或漏洞入侵,加密核心业务数据勒索赎金。
- 木马与后门:开发者电脑或服务器被植入木马,导致源码泄露或权限被窃取。
解决方案
- 端点防护(EDR/NGAV):在服务器和终端上部署新一代防病毒软件,具备行为分析和勒索病毒防护能力。
- 应用白名单:仅允许经过审批的应用程序在服务器上运行。
- 定期离线备份:遵循"3-2-1"备份原则(3份数据,2种介质,1份异地/离线),确保在勒索攻击后可恢复数据。
6. 日志审计与监控
常见安全问题
- 日志记录不足:发生安全事件时,无法追溯攻击来源、路径和影响范围。
- 敏感信息泄露:日志中记录了用户密码、Token 等敏感信息。
- 缺乏实时监控:系统被攻击数天后才发现,错失最佳响应时机。
解决方案
- 集中式日志管理:将所有系统、应用、网络设备的日志统一收集到安全的日志中心(如 ELK Stack, Splunk)。
- 关键事件审计:必须记录登录成功/失败、权限变更、数据增删改等关键操作。
- 实时监控与告警:配置异常行为告警规则(如:短时间内大量登录失败、异常地理位置登录、敏感文件被修改),并通过邮件、钉钉/企业微信实时通知管理员。
7. 供应链与第三方风险
常见安全问题
- 开源组件漏洞:使用的第三方开源库(如 Spring, Fastjson)存在已知漏洞。
- 第三方服务风险:集成的外部 API 或 SaaS 服务安全性不足,导致数据泄露。
解决方案
- 软件物料清单(SBOM):建立项目的 SBOM,清晰掌握所有依赖组件及其版本。
- 定期安全扫描:在 CI/CD 流水线中集成静态应用安全测试(SAST)和依赖漏洞扫描。
- 供应商安全评估:在引入第三方服务前,对其安全能力进行评估,并在合同中明确数据保护责任。