审计、SQL 注入防护与密钥管理

共 20 题
#

1. 参数化查询(PreparedStatement)的应用?

A 参数化查询将 SQL 结构与参数分离,从根本上防止 SQL 注入 ✓ 正确答案
B 参数化查询通过字符串拼接把用户输入嵌入 SQL
C 参数化查询只在部分数据库上支持,MySQL 不支持
D 参数化查询会降低性能,因为无法复用预编译语句
#

2. 审计的内容,登录、查询、DML、DDL?

A 审计覆盖登录、查询、DML、DDL 四类,用于追责与合规 ✓ 正确答案
B 审计只记录 DDL 操作,不涉及登录和 DML
C 全量审计成本可忽略,应默认记录所有操作
D 登录审计只记录成功登录,不记录失败尝试
#

3. ORM 框架的 SQL 注入风险,Hibernate HQL、MyBatis ${}?

A MyBatis 的 #{} 与 ${} 都属于参数化绑定,均安全
B MyBatis ${} 直接替换字符串进 SQL,存在注入风险,应避免用于用户输入 ✓ 正确答案
C Hibernate 的 HQL 永远不可能被注入
D ORM 框架自动防护所有 SQL 注入,无需关注拼接
#

4. ORM 安全实践,参数化、HQL 注入?

A 动态排序字段应直接用 ${} 传入用户输入,简单高效
B 只要使用 ORM 就无需担心 HQL 注入
C HQL 应使用命名参数绑定,动态结构用白名单映射替代拼接 ✓ 正确答案
D 错误信息应尽量详细,帮助调试 SQL 结构
#

5. SQL 注入(SQL Injection)的攻击向量与防护?

A 参数化查询是消除 SQL 注入的根本手段 ✓ 正确答案
B WAF 可以完全替代参数化查询
C 只有表单输入才能被注入,URL 参数不会被利用
D 输入校验可以彻底修复所有 SQL 注入
#

6. SQL 注入的类型,Union-Based、Boolean-Based、Time-Based?

A 三种注入类型中只有 Union 能绕过参数化查询
B Boolean-Based 注入利用延时函数,与页面响应无关
C Time-Based 注入通过页面差异判断条件真假
D Union-Based 注入利用 UNION 合并查询结果,直接回显数据 ✓ 正确答案
#

7. 二阶 SQL 注入(Second-Order SQLi)的原理?

A 二阶注入先存储恶意输入,后续读取并拼接 SQL 时才触发 ✓ 正确答案
B 二阶注入在输入阶段就立即触发,无需存储
C 二阶注入可以通过 WAF 在入口一次性拦截
D 二阶注入只存在于存储过程,不涉及应用拼接
#

8. WAF(Web Application Firewall)的数据库角色?

A WAF 能彻底防御所有 SQL 注入,可替代参数化查询
B WAF 是应用层辅助防线,可被编码绕过,不能替代参数化 ✓ 正确答案
C WAF 只作用于数据库内部,不处理 HTTP 请求
D WAF 能识别并修复应用层所有注入漏洞
#

9. 凭据轮换(Credential Rotation)的策略?

A 凭据应越长有效越好,避免频繁轮换
B 凭据轮换应自动化并与密钥管理集成,实现零停机轮换 ✓ 正确答案
C 凭据轮换只能人工操作,无法自动化
D 凭据轮换只影响运维账号,不影响应用账号
#

10. 审计日志如何防篡改(独立存储、WORM、哈希链)?为什么 DBA 能改业务数据却不能删审计记录?

A 审计日志应存储在业务数据库内,方便 DBA 管理
B DBA 对审计日志拥有完全管理与删除权限
C 哈希链让删除审计记录变得简单高效
D 通过独立存储、WORM 与哈希链实现防篡改,并遵循职责分离 ✓ 正确答案
#

11. 应用的凭据注入(Credential Injection)模式?

A 凭据应硬编码在代码中,便于部署
B 凭据注入只适用于运维,不适用于应用
C 凭据通过环境变量、K8s Secret 或密钥管理平台动态注入,避免硬编码 ✓ 正确答案
D 凭据注入后无需权限控制,可随意访问
#

12. 数据库凭据管理,Vault、AWS Secrets Manager、HashiCorp Vault?

A Vault 与 AWS Secrets Manager 都支持集中存储、自动轮换与访问控制 ✓ 正确答案
B Vault 仅支持静态凭据存储,不支持动态生成
C 凭据管理平台会直接暴露密码给所有应用
D 凭据管理平台无法与数据库集成
#

13. 连接串(Connection String)中的凭据保护?

A 应通过环境变量、Secret 或密钥管理平台注入凭据,并用最小权限账号 ✓ 正确答案
B 密码可直接写在连接串中并提交到代码仓库
C 连接串中的密码无法被窃取,无需保护
D 连接串应使用超级账号,避免权限不足
#

14. GDPR 的被遗忘权(Right to Erasure)实现?

A 需处理主表、备份、日志、缓存等所有数据承载点,可用密钥驱逐 ✓ 正确答案
B 只需删除主表记录即可,备份与日志无需处理
C 被遗忘权只要求逻辑标记,无需物理删除
D 匿名化后数据仍可逆,不符合被遗忘权
#

15. 数据库合规要求,GDPR、等保、PCI DSS、HIPAA?

A GDPR 不要求数据加密和被遗忘权
B 等保只关注网络,不涉及数据库审计
C PCI DSS 只针对健康数据,不涉及持卡人数据
D 各合规标准侧重点不同,但都要求加密、审计、最小权限等安全基线 ✓ 正确答案
#

16. pgAudit 扩展如何记录审计日志,其分类与权限配置如何做?

A pgAudit 无需加载即可生效,无需配置
B pgAudit 只能记录登录,不能记录 DML 和 DDL
C pgAudit 通过 GUC 参数按 read/write/ddl 等分类记录审计日志 ✓ 正确答案
D pgAudit 的审计日志与业务数据同库存储,无法禁用
#

17. WAF 为什么不能替代参数化查询?编码绕过、存储过程与二阶注入场景下 WAF 的盲区在哪里?

A WAF 能识别所有编码与存储过程注入,足以替代参数化
B WAF 存在编码绕过、存储过程与二阶注入盲区,不能替代参数化查询 ✓ 正确答案
C WAF 从语义层面理解 SQL,与参数化查询能力相同
D 参数化查询依赖规则匹配,易被编码绕过
#

18. 全量审计会带来显著性能开销,如何按风险分级采样(登录失败、DDL、敏感列访问)在合规与性能间平衡?

A 全量审计开销可忽略,应默认记录所有操作
B 采样会完全破坏合规性,不能用于审计
C 对登录失败、DDL、敏感列访问等高危事件全量审计,普通查询采样 ✓ 正确答案
D 敏感列访问属于低频,可以完全不记录
#

19. ORM 框架的 SQL 注入风险,参数化查询之外的拼接场景(动态排序、IN 列表、原生查询)为何仍可能被注入,如何系统防范?

A 动态排序字段可以直接拼接用户输入,因为排序不涉及 SQL 注入
B 原生查询走 ORM 就自动安全,无需参数化
C IN 列表可以用字符串拼接,因参数化无法覆盖
D 动态排序、IN 列表、原生查询需用白名单映射与动态参数绑定系统防范 ✓ 正确答案
#

20. 应用账号与运维账号分离、代理登录(proxy 用户)审计真实用户身份如何落地?与连接池复用如何共存?

A 应用与运维应使用同一超级账号,便于统一管理
B 代理登录通过会话级上下文在复用的连接上标识真实用户,实现审计 ✓ 正确答案
C 连接池复用与审计真实用户身份不可共存
D 代理登录直接以真实用户身份建立数据库连接,无需代理