执行安全与正确性保障

共 19 题
#

1. 生成的 SQL 在执行前必须做哪些校验(语法、只读、LIMIT、表/字段白名单),为什么不能直接执行模型输出

A 模型输出可直接执行,无需校验
B 只读校验只针对用户输入,不针对模型输出
C 只需要校验语法,其他无关紧要
D 执行前应做语法、只读、LIMIT 与表/字段白名单校验,不能直接执行模型输出 ✓ 正确答案
#

2. 只读保障,如何通过数据库账号权限、事务隔离与语句级拦截(禁止 SELECT 之外的语句)双保险防止写操作

A 用低权限只读账号做第一道防线,再用语句级拦截做第二道防线,形成双保险 ✓ 正确答案
B 只需数据库账号有 SELECT 权限即可,无需其他防护
C 语句级拦截后无需再关注数据库权限
D 只读事务没有防止写操作的作用
#

3. 行级数据权限,不同用户/租户查询同一张表时,如何把数据权限(RLS/部门过滤)强制注入生成的 SQL,而非依赖模型自觉

A 应提示模型在 SQL 中加上权限条件,靠模型自觉遵守
B 行级权限只有管理员能处理,普通用户无需关注
C 应通过 RLS 或网关强制改写,把租户/部门过滤条件注入生成的 SQL,不依赖模型 ✓ 正确答案
D 权限过滤与用户身份无关
#

4. 执行超时与资源保护,慢查询如何限时终止、限制返回行数与内存,防止一个查询拖垮数据库

A 慢查询应任由其执行完,否则会丢结果
B 超时设置只影响性能,不影响资源安全
C 无需限制行数,全表返回也没问题
D 通过限时终止、限制返回行数与内存,并在独立资源池上执行,防止单个查询拖垮数据库 ✓ 正确答案
#

5. SQL 执行结果的正确性验证,生成 SQL 与参考答案的语义等价(执行结果比对)应如何自动判定,结果不一致时的重试策略

A 通过执行结果比对判定语义等价,结果不一致时用差异驱动重写并设上限 ✓ 正确答案
B 只需比较生成 SQL 与标准 SQL 的字符串是否一致
C 结果不一致时无需重试,直接返回错误
D 数值精度差异不影响等价判定
#

6. 执行错误反馈闭环,SQL 语法错误、列不存在等报错如何回灌给模型修正,重试次数与终止条件如何设置

A 报错信息应原样、无限次回灌给模型重试
B 执行错误即代表失败,直接放弃
C 应净化错误信息回灌模型修正,并设置重试上限与终止条件、区分错误类型 ✓ 正确答案
D 语法错误不需要回灌,模型自己会改
#

7. 敏感数据保护,查询结果含 PII、金额等敏感字段时如何脱敏与授权过滤,审计日志记录哪些内容

A 只需对结果脱敏,无需授权过滤
B 审计日志只记录成功查询,失败可忽略
C 应做字段级授权过滤与结果脱敏,并用审计日志记录用户、SQL、结果摘要等以便追责 ✓ 正确答案
D 敏感字段是否返回由模型自行决定
#

8. 防注入与提示注入,用户问题中的 SQL 片段、恶意指令如何被识别并隔离,Prompt 层与执行层如何双层防护

A 应通过 Prompt 层隔离用户输入,并在执行层用只读、白名单等强制约束形成双层防护 ✓ 正确答案
B 只要在 Prompt 层做隔离,就无需执行层防护
C 提示注入不会影响执行安全
D 用户输入应直接作为指令放心使用
#

9. NL2SQL 的幂等与缓存,相同/相似查询的结果缓存如何设计,数据更新后缓存如何失效

A 缓存键应包含生成 SQL、用户权限与数据版本,并在数据更新、权限或 Schema 变更时失效 ✓ 正确答案
B 缓存键只需包含 SQL 文本,与权限无关
C 相似查询可无条件复用相同结果
D 数据更新后缓存无需失效
#

10. 执行结果的可解释性,生成答案时如何附带“查询了哪些表、过滤条件是什么”的 SQL 摘要与数据来源,便于用户核对

A 只返回答案数值即可,无需说明来源
B 可解释性只影响展示,不影响信任
C 展示 SQL 摘要会增加泄露风险,不应展示
D 应附带 SQL 摘要(用到的表、过滤条件)与数据来源,便于用户核对口径 ✓ 正确答案
#

11. 限流与配额,NL2SQL 查询的并发、资源与配额如何与在线业务隔离,防止分析查询影响核心库

A 分析查询与在线业务共用同一资源即可,无需隔离
B 应把 NL2SQL 查询路由到只读副本或独立资源池,并设置并发与配额上限以隔离影响 ✓ 正确答案
C 配额限制没有必要,会影响用户体验
D 并发上限只适用于在线业务,不适用于分析查询
#

12. 多数据库/数据源路由,问题涉及业务库、数仓与指标库等多个数据源时,如何路由到正确数据源并统一鉴权

A 所有问题都查同一个数据源即可
B 路由后无需再执行行级权限
C 各数据源可各自独立鉴权,无需统一
D 应基于问题语义路由到正确数据源,并在所有数据源上执行统一鉴权 ✓ 正确答案
#

13. 结果聚合与二次处理,SQL 结果返回后,LLM 做总结或图表前的数值准确性校验(单位、精度、汇总一致)如何设计

A 数值可直接由 LLM 自行计算,无需校验
B 精度丢失不影响图表正确性
C 应校验单位、精度与汇总一致性,并让 LLM 基于数据库结果做描述而非自行计算 ✓ 正确答案
D 汇总不一致是正常现象,无需检查
#

14. 执行错误回灌的安全,数据库报错信息直接拼进 Prompt 重试时,错误文本中的用户输入回显如何形成二次注入,如何净化后再回灌?

A 报错信息可原样拼进 Prompt 重试,无安全风险
B 错误文本无需过滤,直接回灌即可
C 二次注入只影响结果,不影响安全
D 报错中的用户输入回显可能形成二次注入,应剥离用户输入、只回灌结构化错误信息 ✓ 正确答案
#

15. 查询黑名单与计划检查,如何对高频大查询、跨表笛卡尔积等风险查询做前置拦截,EXPLAIN 计划检查如何接入执行链路?

A 无法识别风险查询,只能靠事后处理
B 用规则黑名单识别笛卡尔积、全表扫描等风险,并在执行前用 EXPLAIN 计划检查评估实际代价 ✓ 正确答案
C EXPLAIN 会真正执行查询,代价过高不宜使用
D 计划检查只需要在查询失败后做
#

16. 数据权限与脱敏的执行链路,RLS 注入、结果集脱敏与字段级授权在网关/执行层的分工,权限变更后已缓存结果如何失效?

A 字段授权、RLS 注入与结果脱敏可任选其一,无需配合
B 权限变更无需使缓存失效
C 字段级授权管能否看字段、RLS 注入管行过滤、结果脱敏管显示,且权限变更后缓存失效 ✓ 正确答案
D RLS 注入由模型负责,无需网关干预
#

17. 审计与留痕的工程实现,查询日志(用户、Prompt、SQL、结果摘要、耗时)如何低成本采集与检索,满足合规审计与问题追责?

A 只需记录成功查询,失败可忽略
B 日志存满即可,无需长期保留
C 应网关统一采集用户、Prompt、SQL、结果摘要等字段,分层存储并建立检索索引以满足审计追责 ✓ 正确答案
D 审计日志无需防篡改
#

18. 错误分级,SQL 生成失败、执行失败、结果为空与结果可疑应如何区分,分别向用户展示什么

A 所有失败都应统一提示"查询失败"
B 应区分生成失败、执行失败、结果为空与结果可疑,并分别给出对应提示 ✓ 正确答案
C 结果为空说明系统出错,应报错
D 结果可疑无需提示用户
#

19. 审计与合规,谁在何时查了什么数据、基于哪个 Prompt 版本生成的 SQL,应如何留痕以满足数据安全审计

A 应记录用户、时间、查询数据、SQL 与 Prompt 版本,形成可追溯的证据链 ✓ 正确答案
B 只需记录用户与时间,无需记录 SQL 与版本
C Prompt 版本无需绑定,与审计无关
D 审计日志可随意覆盖,无需保留