# 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 代理登录直接以真实用户身份建立数据库连接,无需代理