# 1. XSS(跨站脚本)的 Java 防御,输出编码、CSP、HttpOnly 如何落地 A 只要设置 HttpOnly 标志就能完全防 XSS B CSP 可以替代输出编码,无需转义 C 输出编码只对反射型 XSS 有效 D 用输出编码(HtmlUtils/OWASP Encoder)按上下文转义,配 CSP 响应头与 HttpOnly Cookie 形成纵深防御 ✓ 正确答案
# 2. 敏感数据泄露的 Java 防御,加密、脱敏、日志安全如何落地 A 日志可以记录完整敏感字段以便排查 B 只要数据库加密即可防止所有泄露 C 传输用 TLS、静态用 AES-GCM 加密、对外展示脱敏、日志过滤敏感明文,覆盖数据全生命周期 ✓ 正确答案 D 脱敏与加密是同一概念,可互相替代
# 3. 认证失效(Broken Authentication)的 Java 防御,密码哈希、Session 管理如何落地 A 用 BCrypt/Argon2 加盐慢哈希存储密码,配合会话轮换、过期、HttpOnly/SameSite Cookie 与防爆破 ✓ 正确答案 B 密码用 MD5 加密存储即可 C 登录后无需轮换 Session ID D Session 可以永不过期,提升体验
# 4. OWASP 安全响应头(HSTS/X-Frame-Options/CSP/Referrer-Policy)在 Spring Security 中的配置 A Spring Security 默认不启用任何安全响应头 B CSP 可以随意配置为非常宽松,不影响功能 C 通过 headers() DSL 可配置 HSTS、X-Frame-Options、CSP、Referrer-Policy 等,且默认启用部分安全头 ✓ 正确答案 D HSTS 在 HTTP 环境下也会生效
# 5. 注入攻击(SQL 注入、LDAP 注入、命令注入)的 Java 防御方案 A SQL 用参数化、LDAP 转义、命令用 ProcessBuilder 参数数组,配合白名单与最小权限,核心是数据与代码分离 ✓ 正确答案 B Runtime.exec(String) 拼接用户输入是安全的 C 注入攻击与数据呈现无关,无法防御 D 只要对输入做单引号转义就能防所有注入
# 6. XSS 与 CSRF 的 Java 防御,输出编码、CSP 头与 CSRF Token 如何实现? A XSS 与 CSRF 是同一类攻击,用相同方案防御 B XSS 用输出编码与 CSP 防御,CSRF 用 CSRF Token 与 SameSite 防御,且防 XSS(HttpOnly)也是防 CSRF 的前提 ✓ 正确答案 C CSRF 防护无需 CSRF Token,只需验证码 D 只要启用 CSRF 防护就无需担心 XSS
# 7. XXE(XML 外部实体)攻击的 Java 防御,禁用 DTD、外部实体如何配置 A 只要设置 FEATURE_SECURE_PROCESSING 就完全防 XXE B XXE 只能造成 DoS,无法读取文件 C 优先禁用 DTD(disallow-doctype-decl),或关闭外部实体,并对所有 XML 解析器统一安全配置 ✓ 正确答案 D 只需配置 DocumentBuilderFactory,其他解析器无需处理
# 8. 反序列化漏洞的 Java 防御,ObjectInputFilter、白名单、替代方案如何选择 A 黑名单比白名单更安全 B 原生序列化无需任何过滤即可安全使用 C 反序列化漏洞无法执行任意代码 D 用 ObjectInputFilter 设置白名单限制可反序列化类,并优先用 JSON 等安全格式替代原生序列化 ✓ 正确答案
# 9. 安全配置错误的 Java 防御,默认配置、暴露信息、不必要功能如何处理 A 错误响应应包含完整堆栈以方便调试 B 默认账号密码无需修改 C 所有 actuator 端点都应公开暴露 D 加固默认配置、避免错误信息暴露内部细节、关闭不必要的功能与端点,最小化攻击面 ✓ 正确答案
# 10. 日志与监控不足的 Java 防御,审计日志、入侵检测、异常告警如何建设 A 日志只要记录请求即可,无需审计敏感操作 B 记录安全审计日志、监控异常行为做入侵检测、对异常事件实时分级告警,形成安全运营闭环 ✓ 正确答案 C 异常告警不需要阈值与分级 D 安全事件只需事后看日志,无需实时监控
# 11. 不安全反序列化漏洞,Java 原生序列化的风险与白名单/替代方案如何? A 原生序列化 readObject 可被 gadget 链利用,应优先用 JSON/Protobuf 替代,必须用时用 ObjectInputFilter 白名单 ✓ 正确答案 B Java 原生序列化格式安全,可放心使用 C 白名单比不信任数据更不重要 D 反序列化无法执行任意代码风险
# 12. 开放重定向(Open Redirect)漏洞的产生与 Java 防御 A 只要目标以 http:// 开头就安全 B 协议相对 URL // 是安全的 C 开放重定向不影响用户安全 D 精确解析重定向目标 host 做白名单,优先用相对路径,拒绝 //、@、编码绕过与 javascript: 等危险形式 ✓ 正确答案
# 13. 文件上传安全,扩展名校验、内容检测、存储隔离与图片重编码如何实施 A 只需校验扩展名即可防所有上传攻击 B 用户原始文件名可安全用于存储 C 图片文件中不可能嵌入恶意载荷 D 扩展名白名单加内容魔数双校验、存储隔离与随机文件名、图片重编码去除恶意载荷,防范路径穿越 ✓ 正确答案
# 14. Java 中 SQL 注入的防御,预编译占位符 vs 字符串拼接,MyBatis ${} 的风险如何? A 预编译占位符(#{})把输入作为数据安全,${} 直接拼接存在注入风险,仅用于动态标识符且须白名单校验 ✓ 正确答案 B ${} 与 #{} 一样安全,都走预编译 C 字符串拼接经过转义即可安全 D LIKE 查询通常只能用字符串拼接,无法参数化
# 15. 访问控制失效(Broken Access Control)的 Java 防御,Spring Security 方法级安全如何配置 A 前端隐藏按钮即可防越权 B 用 @PreAuthorize 方法级安全与对象级授权校验资源归属,结合 URL 授权与默认拒绝,防止越权 ✓ 正确答案 C 服务端只需校验登录,无需校验权限 D 方法级安全无法做对象级授权
# 16. 使用含已知漏洞组件的 Java 防御,依赖扫描、SBOM、CVE 监控如何实施 A 依赖一旦引入就不会有漏洞,无需升级 B 用依赖扫描工具识别 CVE、生成 SBOM 清单并持续监控漏洞,及时升级修复,形成闭环 ✓ 正确答案 C SBOM 只用于开发,与安全无关 D 只要构建成功就说明依赖安全
# 17. SSRF 防护,URL 校验、DNS 重绑定与内网地址黑名单如何实现? A 校验 URL scheme 与内网地址黑名单,并防 DNS 重绑定(请求前重新解析校验与禁止重定向),避免访问内网 ✓ 正确答案 B DNS 重绑定无需防护,校验一次即可 C 内网地址黑名单能覆盖所有 SSRF 场景 D 只要校验 scheme 就能防 SSRF
# 18. 安全依赖管理,OWASP Dependency-Check、SBOM 与漏洞修复流程如何? A 发现漏洞后无需评估影响,直接升级即可 B 依赖管理只需锁定版本,无需扫描 C SBOM 用于记录用户密码,与依赖无关 D 用 OWASP Dependency-Check 扫描 CVE、生成 SBOM 清单、持续监控漏洞并执行分级修复流程 ✓ 正确答案
# 19. 水平越权(IDOR)与垂直越权的检测与对象级授权实现 A 通过安全测试与授权事件审计检测越权,用 owner 绑定与 @PreAuthorize 实现对象级授权,并写授权测试 ✓ 正确答案 B 前端隐藏 id 字段即可防 IDOR C 对象级授权只需校验登录,无需校验归属 D 越权无法通过自动化测试发现